论坛首页 Java企业应用论坛

Java Date 类的一个神级误差

浏览 12650 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2011-08-23  
很久之前的帖子了,LZ 凹凸了
0 请登录后投票
   发表时间:2011-08-23  
长见识了,谢谢
0 请登录后投票
   发表时间:2011-08-23  
也就是说那年有两个23:59:08秒,还是那年的23:59:08秒有352秒那么长?
0 请登录后投票
   发表时间:2011-08-24  
没什么可神奇的,大家可以试一下这段代码:

    public static void main(String[] args) throws ParseException {  
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);    
        String str3 = "1990-04-14 23:59:59";
        String str4 = "1990-04-15 01:00:01";
        Date sDt3 = sf.parse(str3);    
        Date sDt4 = sf.parse(str4);    
        long ld3 = sDt3.getTime() /1000;    
        long ld4 = sDt4.getTime() /1000;   
        System.out.println(ld3);    
        System.out.println(ld4);    
        System.out.println(ld4-ld3);  
    }
0 请登录后投票
   发表时间:2011-08-24  
mlw2000 写道
没什么可神奇的,大家可以试一下这段代码:

    public static void main(String[] args) throws ParseException {  
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);    
        String str3 = "1990-04-14 23:59:59";
        String str4 = "1990-04-15 01:00:01";
        Date sDt3 = sf.parse(str3);    
        Date sDt4 = sf.parse(str4);    
        long ld3 = sDt3.getTime() /1000;    
        long ld4 = sDt4.getTime() /1000;   
        System.out.println(ld3);    
        System.out.println(ld4);    
        System.out.println(ld4-ld3);  
    }

我觉得 String str4 = "1990-04-15 01:00:01";应该是 String str4 = "1990-04-15 00:00:01";
才能得到你想要的。。。,不知道我说的对不对。。
0 请登录后投票
   发表时间:2011-08-24  
loookto 写道
mlw2000 写道
没什么可神奇的,大家可以试一下这段代码:

    public static void main(String[] args) throws ParseException {  
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);    
        String str3 = "1990-04-14 23:59:59";
        String str4 = "1990-04-15 01:00:01";
        Date sDt3 = sf.parse(str3);    
        Date sDt4 = sf.parse(str4);    
        long ld3 = sDt3.getTime() /1000;    
        long ld4 = sDt4.getTime() /1000;   
        System.out.println(ld3);    
        System.out.println(ld4);    
        System.out.println(ld4-ld3);  
    }

我觉得 String str4 = "1990-04-15 01:00:01";应该是 String str4 = "1990-04-15 00:00:01";
才能得到你想要的。。。,不知道我说的对不对。。

楼主发现的不错 这个1点的童鞋。。。
0 请登录后投票
   发表时间:2011-08-24  
ln_ydc 写道
http://coolshell.cn/articles/5075.html

+1
0 请登录后投票
   发表时间:2011-08-24  
loookto 写道
mlw2000 写道
没什么可神奇的,大家可以试一下这段代码:

    public static void main(String[] args) throws ParseException {  
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);    
        String str3 = "1990-04-14 23:59:59";
        String str4 = "1990-04-15 01:00:01";
        Date sDt3 = sf.parse(str3);    
        Date sDt4 = sf.parse(str4);    
        long ld3 = sDt3.getTime() /1000;    
        long ld4 = sDt4.getTime() /1000;   
        System.out.println(ld3);    
        System.out.println(ld4);    
        System.out.println(ld4-ld3);  
    }

我觉得 String str4 = "1990-04-15 01:00:01";应该是 String str4 = "1990-04-15 00:00:01";
才能得到你想要的。。。,不知道我说的对不对。。

夏时制问题. Locale.US是重点.
4-15 01:00:01其实是4-15 00:00:01
0 请登录后投票
   发表时间:2011-08-24  
zhangwe415 写道
loookto 写道
mlw2000 写道
没什么可神奇的,大家可以试一下这段代码:

    public static void main(String[] args) throws ParseException {  
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);    
        String str3 = "1990-04-14 23:59:59";
        String str4 = "1990-04-15 01:00:01";
        Date sDt3 = sf.parse(str3);    
        Date sDt4 = sf.parse(str4);    
        long ld3 = sDt3.getTime() /1000;    
        long ld4 = sDt4.getTime() /1000;   
        System.out.println(ld3);    
        System.out.println(ld4);    
        System.out.println(ld4-ld3);  
    }

我觉得 String str4 = "1990-04-15 01:00:01";应该是 String str4 = "1990-04-15 00:00:01";
才能得到你想要的。。。,不知道我说的对不对。。

楼主发现的不错 这个1点的童鞋。。。

1点的童鞋没有写错就是1点
0 请登录后投票
   发表时间:2011-08-24  
是啊,我比较关心当时为什么会回拨五分钟?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics