将 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' 对,那你调查过吗?基本上你的模式被打破了——你需要引用TZ 正确的模式,如副本中完整的工作示例所示是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.(Unknown Source) at java.text.SimpleDateFormat.(Unknown Source) at ibis.test.EricssonDate.main(EricssonDate.java:34) 处初始化(未知源)跨度> 这与我在代码中遇到的异常完全相同 老实说,我只是复制了您的原始模式,看起来并没有工作。由@RobinTopper 更正... 不,他们的编辑也不正确

以上是关于将 GMT 时间转换为特定的字符串格式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 GMT 时间转换为字符串时间

如何使用 MQ 的 esql 将日期的特定时区转换为 GMT 时区?

如何将 UTC 格式的字符串转换为特定时区的日历?

将Javascript日期字符串转换为PHP日期[重复]

如何将本地日期转换为 GMT [重复]

python将10位日期时间戳转换为13位GMT时间戳[重复]