美文网首页
获取当天零时时间戳之误区

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

作者: Darkmoss | 来源:发表于2017-07-20 11:32 被阅读0次

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

    <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>

    相关文章

      网友评论

          本文标题:获取当天零时时间戳之误区

          本文链接:https://www.haomeiwen.com/subject/yrydkxtx.html