我的日期格式是yyyy-MM-dd'T'HH:mm:ss.SSSZ
,它产生日期:
2013-10-08T12:14:39.721+0100
但我需要日期:
2013-10-08T12:14:39.721+01:00
什么日期格式会生成带有冒号的偏移量?
我的日期格式是yyyy-MM-dd'T'HH:mm:ss.SSSZ
,它产生日期:
2013-10-08T12:14:39.721+0100
但我需要日期:
2013-10-08T12:14:39.721+01:00
什么日期格式会生成带有冒号的偏移量?
你可以使用这种格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
查看文档以获取更多信息。
PS:-正如我的朋友@Thomas所说,这仅适用于Java 7及更高版本。
如果您想使用SimpleDateFormat实现,您可以使用适用于 JDK 7 的RJ 解决方案。您也可以使用Joda time实现相同的功能,如下所示
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
String str = fmt.print(dt);
System.out.println(str);
哪个输出,
2013-10-08T20:36:19.802+09:00
OffsetDateTime.parse( "2013-10-08T12:14:39.721+01:00" )
.toString()
2013-10-08T12:14:39.721+01:00
使用现代的 java.time 类来代替麻烦的遗留日期时间类。
您想要的输出格式恰好是OffsetDateTime::toString
方法的默认值。
OffsetDateTime odt = OffsetDateTime.parse( "2013-10-08T12:14:39.721+01:00" ) ;
String output = odt.toString() ;
输出:2013-10-08T12:14:39.721+01:00
顺便说一句,根据我的经验,确实最好按照您在问题中提出的格式设置您的偏移量:使用冒号,填充零,以及 hours 和 minutes。虽然ISO 8601标准和其他标准在技术上允许变化,但我发现一些库和协议只需要完全扩展的格式。所以使用+05:00
而不是+05
or +5:00
or +0500
。
将其简单地更改为该格式不起作用?或者您无法更改日期格式?尝试:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSXXX");
它应该返回用冒号分隔的最后一部分。