如何在 java 中获取此日期时间格式

How can I get this datetime format in java

我按照这个api document,这个api需要一个Date header,他们说他们只支持GMT日期格式,所以我尝试了所有的波纹管,但没有一个成功。

@Test
public void testFormat(){
    Date a = new Date("Tue, 08 Dec 2015 06:13:40 GMT");
    System.out.println(a);
    Date b = new Date("Thu, 17 Mar 2012 18:49:58 GMT");
    System.out.println(b);
    System.out.println(b.toGMTString()); // 17 Mar 2012 18:49:58 GMT
    System.out.println(b.toLocaleString());// 2012-3-18 2:49:58
    System.out.println(DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT.format(b));//2012-03-18T02:49:58+08:00
}

那么,像这样的格式是什么 Tue, 08 Dec 2015 06:13:40 GMT,我怎样才能在 Java 中得到这种格式?

编辑

输出

Tue Dec 08 14:13:40 CST 2015
Sun Mar 18 02:49:58 CST 2012
17 Mar 2012 18:49:58 GMT
2012-3-18 2:49:58
2012-03-18T02:49:58+08:00

我不只是问模式,我想知道这种格式是否有任何标准或名称?

你应该使用 SimpleDateFormat class。传递正确的模式,老实说,你可以获得任何你想要的输出。 有您应该参考的功能的文档 Java Doc Simple Date Format

这样的格式是什么Tue, 08 Dec 2015 06:13:40 GMT?有什么标准或名称吗?

The doc of Date.parse() refers to it as “the IETF standard date syntax”. That of DateTimeFormatter.RFC_1123_DATE_TIME 作为“RFC 1123 / RFC 822”。后者更新很多,所以可能更当前。

如何在 Java 中获取此格式?

内置为java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME。比如我的电脑上OffsetDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)刚出品

Thu, 6 Apr 2017 15:25:44 +0200

我用的类在java.time包里。它们内置于我正在使用的 Java 8 中。在 Android 上,您可以在 the ThreeTenABP.

中获得 java.time

以上输出中的区域偏移量为 +0200。如果我希望它是 GMT 怎么办?只需使用 OffsetDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.RFC_1123_DATE_TIME),它就会。更一般地说,确保您的 OffsetDateTime 在 UTC 偏移量中。或者,使用 DateTimeFormatter.RFC_1123_DATE_TIME.withZone(ZoneOffset.UTC);这将覆盖您的 OffsetDateTime.

的区域

如果您不想依赖 ThreeTenABP,我相信 Zaki Pathan 的评论为您提供了 Android.

的解决方案