获取当天零时时间戳之误区

由于近期需要处理获取当天零时时间戳的需求,在网上搜索了一下,大多给
出的答案如下:

<code>
public static void main(String[] args) {
long current=System.currentTimeMillis();//当前时间毫秒数
long zero=current/(1000*3600*24)*(1000*3600*24)-TimeZone.getDefault().getRawOffset();
System.out.println(new Timestamp(zero));//今天零点零分零秒
}
</code>

自己不假思索也用了一把,结果被打脸了~
下来仔细看了下这个代码,发现是有个小小的误区的~
就是除数86400000如果大于TimeZone.getDefault().getRawOffset(),会出现跨天的现象,导致结果是错误的。
以东八区为例,如果当前时间为2017/07/20/06:00:00,得出的zero则为2017/07/19/00:00:00。

可将代码修改如下:

<code>
public static void main(String[] args) {
long current=System.currentTimeMillis();//当前时间毫秒数
long tmp = imeZone.getDefault().getRawOffset();
long zero=(current+tmp)/(1000*3600*24)*(1000*3600*24)-tmp;
System.out.println(new Timestamp(zero));//今天零点零分零秒
}
</code>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目前获取毫秒值大概有下面三种方法 Java代码 //方法 一 System.currentTimeMillis()...
    java大湿兄阅读 9,122评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • 从地铁找出来沿着昏黄的灯光 去找寻自己的车 边走边想 某人会不会像上周那样突然出现在家里 自言自语道 应该不太可能...
    丹妮周阅读 508评论 0 1
  • 米果甜心阅读 312评论 0 0
  • 借用奥斯特洛夫斯基的话来说,一个成功的人,他的人生应该这样度过,不因碌碌无为而悔恨,也不以自己一事无成而悲哀,而...
    狗子讲故事阅读 613评论 5 10