将 GMT 时间转换为特定的字符串格式 [重复]
Posted
技术标签:
【中文标题】将 GMT 时间转换为特定的字符串格式 [重复]【英文标题】:Convert GMT time to specific String Format [duplicate] 【发布时间】:2018-01-14 22:49:43 【问题描述】:我有特定的情况,我必须获取日期字段,将其转换为 GMT 时间,然后将其转换为特定的字符串格式。
这给出了 GMT 时间:
public static void main(String[] args)
Date rightNow = Calendar.getInstance().getTime();
DateFormat gmtFormat = new SimpleDateFormat();
TimeZone gmtTime = TimeZone.getTimeZone("GMT");
gmtFormat.setTimeZone(gmtTime);
System.out.println("GMT Time: " + gmtFormat.format(rightNow));
String gmtDate=gmtFormat.format(rightNow);
现在我需要将该 GMT 时间转换为字符串格式 yyyy-MM-ddTHH:mm:ssZ
我所在时区的当前时间示例为17:10:00
,格林威治标准时间为15:10:00
,因此这意味着最终输出应为2017-08-07T15:10:00Z
我尝试使用此代码添加:
String pattern = "yyyy-MM-ddTHH:mm:ssZ";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(gmtDate);
System.out.println(date);
当然我得到了异常,因为字符串不能像这样转换,但我需要类似的东西。
【问题讨论】:
您有使用旧的日期/时间 API 吗? java.time 包要好得多。除此之外,尚不清楚您遇到了什么异常或在哪里...... 嗨,我在这一行遇到异常: SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);线程“主”java.lang.IllegalArgumentException 中的此异常:java.text.SimpleDateFormat.compile(Unknown Source) at java.text.SimpleDateFormat.initialize(Unknown Source) 处的非法模式字符 'T' 对,那你调查过吗?基本上你的模式被打破了——你需要引用T
和Z
。
正确的模式,如副本中完整的工作示例所示是public static final String ISO_8601_24H_FULL_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
,根据ISO_8601#Combined_date_and_time_representations。 不要按照其他人的建议在末尾硬编码Z
。
【参考方案1】:
将您的 2 个代码块合并在一起:
public static void main(String[] args)
Date rightNow = Calendar.getInstance().getTime();
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
DateFormat gmtFormat = new SimpleDateFormat(pattern);
TimeZone gmtTime = TimeZone.getTimeZone("GMT");
gmtFormat.setTimeZone(gmtTime);
System.out.println("GMT Time: " + gmtFormat.format(rightNow));
或"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
JavaDoc...
【讨论】:
这不起作用:线程“主”java.lang.IllegalArgumentException 中的异常:java.text.SimpleDateFormat.compile(Unknown Source) at java.text.SimpleDateFormat 处的非法模式字符“T”。在 java.text.SimpleDateFormat.以上是关于将 GMT 时间转换为特定的字符串格式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章