java 8获取当前日期的字符串值(带偏移量)
我想以这种格式获取当前日期“2017-09-07T11:55:32+00:00” 但不太熟悉如何在Java8中实现。。试过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.
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