一年中最后一天的时间转换错误

时间:2018-11-18 07:01:37

标签: java datetime java-time date-conversion

以下代码段显示错误的年份。我在这里做错什么了吗?它将日期时间打印为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);
    }
}

1 个答案:

答案 0 :(得分:3)

您需要使用“ 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