Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日期偏移格式问题?_Java - Fatal编程技术网

Java日期偏移格式问题?

Java日期偏移格式问题?,java,Java,我的日期格式是yyyy-MM-dd'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'H

我的日期格式是
yyyy-MM-dd'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");
有关更多信息,请查看


p.S:-正如我的朋友@Thomas提到的,这只适用于Java 7及以上版本。

如果您想使用实现,可以使用适用于JDK 7的。您还可以使用以下方法实现相同的功能

哪些输出

2013-10-08T20:36:19.802+09:00
tl;博士 2013-10-08T12:14:39.721+01:00

java.time 使用现代的java.time类取代麻烦的遗留日期时间类

所需的输出格式恰好是方法的默认格式

输出:2013-10-08T12:14:39.721+01:00

看这个


顺便说一句,根据我的经验,确实最好按照您在问题中提出的那样设置UTC偏移量的格式:使用冒号,填充零,同时使用小时和分钟。虽然标准和其他标准在技术上允许变化,但我发现一些库和协议只期望完全扩展的格式。因此,使用
+05:00
而不是
+05
+5:00
+0500

这里有一个提示让我明白:这适用于Java7+。
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()
OffsetDateTime odt = OffsetDateTime.parse( "2013-10-08T12:14:39.721+01:00" ) ;
String output = odt.toString() ;