为什么将分钟,小时和秒设置为与日历中的unix时间戳相同会给出错误的时间?

时间:2016-06-24 20:25:18

标签: java unix-timestamp

我有一个时间戳:1454716800,代表02/06/2016 @ 12:00am (UTC)。你可以看到它的0小时(24小时制),0分钟,0秒。但是当我将它创建为Calendar对象并将小时,分钟和秒设置为相同(00:00:00)时,它会在不同的时间出现!这是为什么?

    long timestamp = 1454716800;

    Calendar theDate = Calendar.getInstance();

    //Set our date and adjust the time
    theDate.setTimeInMillis( timestamp * 1000 );
    theDate.set(Calendar.HOUR_OF_DAY, 0);
    theDate.set(Calendar.MINUTE, 0);
    theDate.set(Calendar.SECOND, 0);

我做错了什么?

1 个答案:

答案 0 :(得分:2)

Unix Epoch时间戳显然是UTC,但默认的Java Calendar不是。修复:

Calendar theDate = Calendar.getInstance( TimeZone.getTimeZone("UTC") );