相关疑难解决方法(0)

Java,DateTimeFormatter 不考虑 ZoneDateTime 的时区

我有这行代码:

// I pass milliseconds timestamp on time var
ZonedDateTime zonedDatetIme = ZonedDateTime.ofInstant(java.time.Instant.ofEpochMilli(time), java.time.ZoneId.of("Asia/Almaty"))
Run Code Online (Sandbox Code Playgroud)

当我这次尝试输出时,它返回:

System.our.println(zonedDatetIme)
// returns
2020-01-24T17:00+06:00[Asia/Almaty]
Run Code Online (Sandbox Code Playgroud)

然后我试图格式化这个日期时间:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern('dd.MM.yyyy hh:mm');
System.our.println(formatter.format(zonedDateTime));
Run Code Online (Sandbox Code Playgroud)

返回给我的是:

24.01.2020 05:00
Run Code Online (Sandbox Code Playgroud)

那是错的。这就像它减去我的时区的 6 小时而不是添加它。为什么会发生这种情况?

java datetime datetime-format

1
推荐指数
1
解决办法
46
查看次数

为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?

这是代码:

LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(1451438792953L), ZoneId.of("UTC"));
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd'T'HH:mm:ss.SSS'Z'");
String output = dateTimeFormatter.format(localDateTime);
Run Code Online (Sandbox Code Playgroud)

这是值localDateTime

2015-12-30T01:26:32.953
Run Code Online (Sandbox Code Playgroud)

这是值output

2016-12-30T01:26:32.953Z
Run Code Online (Sandbox Code Playgroud)

为什么要增加一年?

其中java.time.temporal.WeekFields有几种方法,有时会newYearWeek增加年数1。为什么?

这是一个奇怪的错误。

java time localization utc

0
推荐指数
1
解决办法
167
查看次数

标签 统计

java ×2

datetime ×1

datetime-format ×1

localization ×1

time ×1

utc ×1