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

Java 为什么将分钟、小时和秒设置为与日历中的unix时间戳相同会给出错误的时间?,java,unix-timestamp,Java,Unix Timestamp,我有一个时间戳:1454716800,它代表了02/06/2016@12:00am(UTC)。你可以看到它是0小时(24小时制),0分,0秒。但是,当我将它创建为一个日历对象并将小时、分钟和秒设置为相同(00:00:00)时,它会在不同的时间出现!为什么会这样 long timestamp = 1454716800; Calendar theDate = Calendar.getInstance(); //Set our date and adjust the tim

我有一个时间戳:
1454716800
,它代表了
02/06/2016@12:00am(UTC)
。你可以看到它是0小时(24小时制),0分,0秒。但是,当我将它创建为一个
日历
对象并将小时、分钟和秒设置为相同(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);

我做错了什么?

Unix历元时间戳显然是UTC,但默认的Java日历不是UTC。要修复:

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

请加上期望的和返回的。它在不同的时间出现是什么意思?你打印了什么?怎么打印?你在哪个时区?