Java UTC时间戳的坑

Java UTC时间戳的坑

项目中有个地方需要取到UTC的时间戳传给Server,找到网络上大部分的代码如下转换:

//1、取得本地时间:
java.util.Calendar cal = java.util.Calendar.getInstance();
//2、取得时间偏移量:
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
//3、取得夏令时差:
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
//4、从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
//之后,您再通过调用cal.get(int x)或cal.getTimeInMillis()方法所取得的时间即是UTC标准时间。

实际上从cal.getTimeInMillis()取出来的毫秒数是不对的,当设置不同时区时,用这个方法取到的值是不同的。正确的方法应该是

java.util.Calendar cal = java.util.Calendar.getInstance();
cal.getTimeInMillis();

getTimeInMillis实际上已经是取utc毫秒数了,和时区没关系


参考资料:Java Timezone why different timezone give same value in millisec

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容