今日零点时间戳的计算问题
一开始在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);