如何在 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.
的解决方案
我按照这个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.
的解决方案