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

标签 java datetime calendar unix-timestamp datetime-conversion

我编写了这个方法来将 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/

相关文章:

java - 将数组传递给数组会产生空值,我做错了什么?

单行上的 Javadoc 多个变量

php - 如何将 php 中的日期转换为 SQL 格式? (并插入)

calendar - 如何在 Kendo UI 中使用 Jalali 日历或 Jalali 日期选择器?

android - 不是单例模式,不能使用

java - 从 FFmpeg 解析 BufferedImages 的 ArrayList

java - 模式更新后 jOOQ 生成类的运行时验证?

python - 如何使用 Python 或 SQL 计算过去 X 周的天数?

python - 如何在 Python 3.7+ 中使用 argparse 传递日期?

c# - gridview edititem 模板内的日历控件