将字符串转换为毫秒

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

显然,第一个日期晚于第二个日期,但其转换的毫秒数较小.我在格式上有任何错误吗?

har*_*pun 8

两个时间戳之间的时差(以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时,它比第一个时间戳大.