为什么将分钟、小时和秒设置为与日历中的 unix 时间戳相同会给出错误的时间?
Why does setting the minutes, hours and seconds to the same as a unix timestamp in Calendar give the wrong time?
我有一个时间戳: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);
我做错了什么?
Unix 纪元时间戳显然是 UTC,但默认 Java 日历不是。修复:
Calendar theDate = Calendar.getInstance( TimeZone.getTimeZone("UTC") );
我有一个时间戳: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);
我做错了什么?
Unix 纪元时间戳显然是 UTC,但默认 Java 日历不是。修复:
Calendar theDate = Calendar.getInstance( TimeZone.getTimeZone("UTC") );