我有以下代码,我的目标是以毫秒为单位返回GMT+0
时间。但为什么我总是得到我当地的时区millisec?
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Calendar cal2 = Calendar.getInstance();
System.out.println("Time zone id is:"+cal.getTimeZone().getID()+";time in millisec:"+cal.getTimeInMillis());
System.out.println("Time zone id is:"+cal2.getTimeZone().getID()+";time in millisec:"+cal2.getTimeInMillis());
输出
时区ID为:GMT;以毫秒为单位的时间:1332740915154
时区ID为:欧洲/赫尔辛基;时间以毫秒为单位:1332740915154
为什么不同的时区以毫秒为单位给出SAME值?
我想如果它是GMT+0
那么它应该是毫秒与本地时区的不同值。
答案 0 :(得分:23)
为什么不同的时区以毫秒为单位给出SAME值?
因为这就是的意思。来自文档:
(返回)从纪元开始的UTC毫秒的当前时间。
换句话说,它是Date
返回的getTime
中的值 - 它不依赖于时区。如果您想要取决于时区的值,请使用Calendar.Get(Calendar.YEAR)
等
Calendar.getTime()
和Calendar.getTimeInMillis()
都会在日历中及时返回代表 instant 的值,这与时区和日历系统无关。
答案 1 :(得分:6)
Java 中的Date对象的millisec
只是GMT+0 1970/01/01 00:00:00
以来的毫秒数。它独立于时区。时区是将Date格式化为可读字符串的属性。
答案 2 :(得分:1)
getTimeInMillis()方法从当前时间返回UTC毫秒的当前时间。因此,即使两个日历对象具有不同的时区,您也会获得相同的毫秒数。