一年中最后一天的时间转换错误
Wrong year in time conversion for final day of the year
下面的代码片段打印了错误的年份。我在这里做错了什么吗?它将日期时间打印为 2018-12-31 00:00:00
,但实际上应该是 2017-12-31 00:00:00
。我在 JavaScript 中转换了同一个纪元,它工作正常。我还将时区设置为 UTC
,结果为 2017-12-30 18:30:00
,但将时区设置为 Asia/Calcutta
会增加一年。我在这里错过了什么?
import java.time.*;
import java.time.format.*;
public class MyClass {
public static void main(String args[]) {
DateTimeFormatter format = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss");
String time = LocalDateTime.ofInstant(Instant.ofEpochMilli(1514658600000L), ZoneId.of("Asia/Calcutta")).format(format);
System.out.println(time);
}
}
您需要使用 'yyyy' 而不是 'YYYY':
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
来自文档:
Symbol Meaning Presentation Examples
y year-of-era year 2004; 04
Y week-based-year year 1996; 96
下面的代码片段打印了错误的年份。我在这里做错了什么吗?它将日期时间打印为 2018-12-31 00:00:00
,但实际上应该是 2017-12-31 00:00:00
。我在 JavaScript 中转换了同一个纪元,它工作正常。我还将时区设置为 UTC
,结果为 2017-12-30 18:30:00
,但将时区设置为 Asia/Calcutta
会增加一年。我在这里错过了什么?
import java.time.*;
import java.time.format.*;
public class MyClass {
public static void main(String args[]) {
DateTimeFormatter format = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss");
String time = LocalDateTime.ofInstant(Instant.ofEpochMilli(1514658600000L), ZoneId.of("Asia/Calcutta")).format(format);
System.out.println(time);
}
}
您需要使用 'yyyy' 而不是 'YYYY':
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
来自文档:
Symbol Meaning Presentation Examples y year-of-era year 2004; 04 Y week-based-year year 1996; 96