gpt4 book ai didi

java - Calendar.setTimeInMillis 错误 - 这是为什么?

转载 作者:行者123 更新时间:2023-12-02 01:19:30 24 4
gpt4 key购买 nike

日历得到了错误的unix时间,就像我得到的那样。

long millis = 1568814839L;
System.out.println(millis); //1568814839
Calendar.getInstance(TimeZone.getTimeZone("Asia/Tashkent"));
calendar.setTimeInMillis(millis);
System.out.println(calendar.get(Calendar.MILLISECOND));//839

我该怎么办? Calendar.YEAR 应该是 2019 年,即毫秒。但是,日历给我的是 1970 年,为什么?

最佳答案

该错误是由于您混淆了以毫秒为单位的时间和以秒为单位的时间。 1568814839L 是自 1970 年 1 月 1 日以来的秒数,但您将其视为毫秒。这很容易检查:

long millis = 1568814839L;
System.out.println(millis); //1568814839
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tashkent"));
System.out.println(calendar.getTimeInMillis()); //1568820981321
calendar.setTimeInMillis(millis);
System.out.println(calendar.get(Calendar.YEAR));//839

这将产生:

1568814839
1568820981321
1970

如您所见,您的数字相差了 3 个数量级。在毫秒数末尾添加三个 0:

long millis = 1568814839000L;
...
System.out.println(calendar.get(Calendar.YEAR));

现在你得到:

1568814839000
1568821211006
2019

关于java - Calendar.setTimeInMillis 错误 - 这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com