我的日期格式为yyyy-MM-dd'T'HH:mm:ss.SSSZ
,即生成日期:
2013-10-08T12:14:39.721+0100
但我需要约会日期:
2013-10-08T12:14:39.721+01:00
什么日期格式会用冒号生成偏移?
答案 0 :(得分:8)
您可以使用此格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
有关详细信息,请查看doc。
P.S:正如我的朋友 @Thomas 所提到的,这只适用于 Java 7 及以上。
答案 1 :(得分:0)
简单地将其更改为该格式不起作用?或者您无法更改日期格式? 尝试:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSXXX");
它应该返回由冒号分隔的最后一部分。
请参阅:Java SimpleDateFormat Timezone offset with minute separated by colon
答案 2 :(得分:0)
如果您想使用SimpleDateFormat实施,可以使用适用于JDK 7的R.J. solution。您也可以使用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
答案 3 :(得分:0)
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
请参阅此code run live at IdeOne.com。
顺便说一句,根据我的经验,确实最好按照你在问题中的要求格式化你的UTC偏移:用冒号,填充为零,以及小时和分钟。虽然ISO 8601标准和其他标准在技术上允许变化,但我发现一些库和协议只期望完全扩展的格式。因此,请使用+05:00
而不是+05
或+5:00
或+0500
。