java 8获取当前日期的字符串值(带偏移量)

java 8获取当前日期的字符串值(带偏移量),java,datetime,Java,Datetime,我想以这种格式获取当前日期“2017-09-07T11:55:32+00:00” 但不太熟悉如何在Java8中实现。。试过 LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; String todaysDateTime = now.format(formatter); 给我一个错误 java.time.

我想以这种格式获取当前日期“2017-09-07T11:55:32+00:00” 但不太熟悉如何在Java8中实现。。试过

    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
    String todaysDateTime = now.format(formatter);
给我一个错误

java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: 
OffsetSeconds
有人知道我是怎么做到的吗

OffsetDateTime odt = now.atOffset(ZoneOffset.ofHoursMinutes(1, 0));
System.out.println(odt);
所有时间变量的toString已经给出了相应的ISO格式

2017-11-08T15:31:04.115+01:00
但是,它将给出Z,而不是+00:00。同时给出毫秒。所以,要么使用这个标准,要么制作自己的图案

您的格式为:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
其中小的
x
(而不是
x
)没有“Z”替换,冒号需要xxx


因此得到的字符串可以是(谢谢@OleV.V.):


另一个方向:

LocalDateTime
包装了一个长的、一毫秒的自计数。它不再像
OffsetDateTime
中那样保存偏移量

OffsetDateTime odt = fmt.parse(inputString);
Instant instant = odt.toInstant(); // Bare bone UTC time.
LocalDateTime ldt = LocalDateTime.ofInstant(odt.toInstant(), ZoneId.of("UTC")); // UTC too.
(这比我想象的要复杂一些。)

所有时间变量的toString已经给出了相应的ISO格式

2017-11-08T15:31:04.115+01:00
但是,它将给出Z,而不是+00:00。同时给出毫秒。所以,要么使用这个标准,要么制作自己的图案

您的格式为:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
其中小的
x
(而不是
x
)没有“Z”替换,冒号需要xxx


因此得到的字符串可以是(谢谢@OleV.V.):


另一个方向:

LocalDateTime
包装了一个长的、一毫秒的自计数。它不再像
OffsetDateTime
中那样保存偏移量

OffsetDateTime odt = fmt.parse(inputString);
Instant instant = odt.toInstant(); // Bare bone UTC time.
LocalDateTime ldt = LocalDateTime.ofInstant(odt.toInstant(), ZoneId.of("UTC")); // UTC too.

(这比我想象的要复杂一些。)

DateTimeFormatter.ISO_DATE_TIME有什么问题;给我一个值“2017-11-08T14:31:31.783”。。无偏移量
LocalDateTime
定义为没有时区或偏移量的日期/时间。因此,您无法将其转换为一(即不提供偏移量)。请使用适当的类型之一。所需的偏移量是否总是
+00:00
(零偏移量)?DateTimeFormatter.ISO_DATE_TIME有什么问题;给我一个值“2017-11-08T14:31:31.783”。。无偏移量
LocalDateTime
定义为没有时区或偏移量的日期/时间。因此,您无法将其转换为一(即不提供偏移量)。请使用适当的类型之一。所需的偏移量是否总是
+00:00
(零偏移量)?谢谢您的帮助。。。。所以你上面建议的格式给了我同样的错误。。。LocalDateTime ld=LocalDateTime.now();DateTimeFormatter fmt=模式的DateTimeFormatter.(“yyyy-MM-dd'T:HH:MM:ssxxx”);字符串dateString=ld.format(fmt);您仍然需要使用该格式化程序格式化
OffsetDateTime
(或
ZoneDateTime
),而不是
LocalDateTime
OffsetDateTime.now(ZoneOffset.UTC).format(模式的DateTimeFormatter.of(“yyyy-MM-dd'HH:MM:ssxxx”)
@OleV.V。谢谢你的解释(我的答案),我会无耻地给我的答案加上你的一句话。。。我该怎么走相反的方向。。。。i、 e.解析iso格式的字符串并调整我的本地日期/时间?。。。i、 e..2017-11-06T11:55:32+09:00获得2017-11-06T02:55:32+00:00感谢。。。。所以你上面建议的格式给了我同样的错误。。。LocalDateTime ld=LocalDateTime.now();DateTimeFormatter fmt=模式的DateTimeFormatter.(“yyyy-MM-dd'T:HH:MM:ssxxx”);字符串dateString=ld.format(fmt);您仍然需要使用该格式化程序格式化
OffsetDateTime
(或
ZoneDateTime
),而不是
LocalDateTime
OffsetDateTime.now(ZoneOffset.UTC).format(模式的DateTimeFormatter.of(“yyyy-MM-dd'HH:MM:ssxxx”)
@OleV.V。谢谢你的解释(我的答案),我会无耻地给我的答案加上你的一句话。。。我该怎么走相反的方向。。。。i、 e.解析iso格式的字符串并调整我的本地日期/时间?。。。i、 e..给定2017-11-06T11:55:32+09:00得到2017-11-06T02:55:32+00:00