gpt4 book ai didi

java - 从 UNIX 时间到日历的转换 - 存在一小时的不一致

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

我编写了这个方法来将 unix 时间转换为日历对象:

     /**
* Converts Unix time to Calendar instance.
*/
public static Calendar unixToCalendar(long unixTime){
Calendar calendar = new GregorianCalendar(1970/*Year*/, GregorianCalendar.JANUARY/*0*/, 1 /*Day*/, 00, 0);
calendar.add(Calendar.MINUTE, (int) (unixTime/60/* Sec to Min */));
return calendar;
}

问题是,对于更大的输入值,我得到的实际时间与结果之间正好有一个小时的差异。

差异从 796000000 值之间的某个位置开始...

例如,在 796000000 之前,我们得到相同的结果(与现实相符),但对于 797000000 及以上,我们得到一小时的差异(我的代码向前一小时)。

如果我使用:

calendar.setTimeInMillis(unixTime*1000);

我遇到了同样的问题,只是与现实有 3-2 小时的差异(相同的值)。

我使用了一些在线网站来检查自己,我正在寻找 GMT 0 的结果。 http://www.epochconverter.com/ http://www.onlineconversion.com/unix_time.htm

谢谢

最佳答案

推荐的方法是检索日历的本地实例:

Calendar c = Calendar.getInstance(); 

然后使用setTimeInMillis()方法传入Unix时间。像这样:

/**
* Converts Unix time to Calendar instance.
*/
public static Calendar unixToCalendar(long unixTime){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(unixTime);
return calendar;
}

关于java - 从 UNIX 时间到日历的转换 - 存在一小时的不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16299494/

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