gpt4 book ai didi

java - 显示错误的时差

转载 作者:行者123 更新时间:2023-12-01 16:52:31 24 4
gpt4 key购买 nike

我尝试了很多方法来显示两次之间的差异,但找不到解决方案:

long strt = System.currentTimeMillis();//1462968291733
Thread.sleep(5000);
long end = System.currentTimeMillis();//1462968296733

long diff = end - strt;

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(diff);
TimeZone timeZone = TimeZone.getTimeZone("IST");
calendar.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));

System.out.println(calendar.getTime());//05:30:05

打印错误的输出:

Thu Jan 01 05:30:05 IST 1970

输出应该是

Thu Jan 01 00:00:05 IST 1970

最佳答案

您对时区感到困惑。请尝试以下操作:

long strt = System.currentTimeMillis();// 1462968291733
Thread.sleep(5000);
long end = System.currentTimeMillis();// 1462968296733

long diff = end - strt;


Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(diff);
TimeZone cutsomTimeZone = TimeZone.getTimeZone("IST");

DateFormat formatter = new SimpleDateFormat
("EEE MMM dd HH:mm:ss zzz yyyy");
formatter.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
System.out.println(formatter.format(calendar.getTime()));//

formatter.setTimeZone(cutsomTimeZone);
System.out.println(formatter.format(calendar.getTime()));

首先,正如 javadoc 所说,System.currentMillis() 返回 UTC 自 1970 年 1 月 1 日以来的毫秒数,这与 IST 明显不同。

其次,calendar.getTime() 返回的 Date 对象不包含时区。使用 System.out.println(calendar.getTime()) 获得的输出使用系统的默认 TimeZone ,它似乎是 IST。

第三,请不要使用Date api,它真的很糟糕。如果可能,首选 java.time

关于java - 显示错误的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37162378/

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