相关疑难解决方法(0)

DateTimeFormatter为边缘情况提供错误的格式

DateTimeFormatter 未按照以下代码段提供2018年12月30日和31日的正确格式.

final String DATE_FORMAT = "YYYYMM";
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(DATE_FORMAT);
LocalDateTime startDate = LocalDateTime.of(2018,12,29,5,0,0);
System.out.println(startDate.format(dateFormat));
//prints 201812
LocalDateTime startDate = LocalDateTime.of(2018,12,30,5,0,0);
System.out.println(startDate.format(dateFormat));
//prints 201912 <------ should be 201812
LocalDateTime startDate = LocalDateTime.of(2018,12,31,5,0,0);
System.out.println(startDate.format(dateFormat));
//prints 201912 <------ should be 201812
Run Code Online (Sandbox Code Playgroud)

这是预期的行为还是DateTimeFormatter存在错误?

java datetime datetime-format java-8

6
推荐指数
2
解决办法
115
查看次数

在 1 月首先使用 DateTimeFormatter 会导致无效的年份值

当我在设置为 2017 年 1 月 1 日的 LocalDate 上使用 DateTimeFormatter(代码如下)时,我以错误的年份值结束。

LocalDate.of(2017,1,1).toString
Run Code Online (Sandbox Code Playgroud)

这将正确显示 2017-01-01 而

LocalDate.of(2017,1,1).format(DateTimeFormatter.ofPattern("dd MMM YYYY"))
Run Code Online (Sandbox Code Playgroud)

给我:01 janv。2016. 你知道为什么会这样吗?

java

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

为什么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 ×3

datetime ×1

datetime-format ×1

java-8 ×1

localization ×1

time ×1

utc ×1