黄懋贤 - 博客园

零点时间戳

今日零点时间戳的计算问题

一开始在csdn找的

  - long zero = System.currentTimeMillis() / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
  - System.currentTimeMillis() / (1000 * 3600 * 24) 获取当前时间后取整,得到当天的天数
  - System.currentTimeMillis() / (1000 * 3600 * 24) * (1000 * 3600 * 24)取整之后乘以一天的毫秒数,得到当天零点的毫秒数(由于时区的原因,实际得到的是当天早上8点整的毫秒数)
  - TimeZone.getDefault().getRawOffset()  减去时区偏移量,得到当天零点的毫秒数
  - 发现不对劲,0-8h计算的零点均为昨日零点

发现算法问题,正确代码如下

  - long zero =  System.currentTimeMillis()- ( System.currentTimeMillis()+ TimeZone.getDefault().getRawOffset()) % (1000 * 3600 * 24);
posted @ 2020-09-29 15:43  hmx1  阅读(165)  评论(0编辑  收藏  举报