use*_*467 12 java datetime milliseconds
我想计算两个日期之间的时差(格式为"yyyyMMddHHmmss").基本思想是首先将字符串日期转换为毫秒,然后获得时间差.
Calendar c1 = Calendar.getInstance();
c1.setTime(new SimpleDateFormat("yyyyMMddHHmmss").parse("20110327032913"));
System.out.println(c1.getTimeInMillis());
Calendar c2 = Calendar.getInstance();
c2.setTime(new SimpleDateFormat("yyyyMMddHHmmss").parse("20110327025913"));
System.out.println(c2.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)
结果:
1301189353000
1301191153000
显然,第一个日期晚于第二个日期,但其转换的毫秒数较小.我在格式上有任何错误吗?
两个时间戳之间的时差(以ms为单位)为30分钟:
1301191153000 - 1301189353000 = 1800000ms = 30 min
Run Code Online (Sandbox Code Playgroud)
由于3月27日的DST更改,时钟正在凌晨2点从凌晨2点到凌晨3点向前设置,因此时间戳:
20110327032913 => 2011-03-27 03:29:13
20110327025913 => 2011-03-27 02:59:13
Run Code Online (Sandbox Code Playgroud)
实际上解释为:
2011-03-27 03:29:13
2011-03-27 03:59:13 (+1 hour from original time)
Run Code Online (Sandbox Code Playgroud)
因此,第二个时间戳来得晚,当转换为ms时,它比第一个时间戳大.