我想计算两个日期之间的时差(格式为“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());
结果:
1301189353000
1301191153000
显然,第一个日期晚于第二个日期,但其转换的毫秒数较小 . 我在格式上有任何错误吗?
3 回答
两个时间戳之间的时差(以ms为单位)为30分钟:
由于3月27日DST的变化,时钟正在凌晨2点从凌晨2点到凌晨3点向前设置,因此时间戳:
实际上解释为:
因此,第二个时间戳来得晚,当转换为ms时,它比第一个时间戳大 .
我打赌你在2011年3月27日夏令时从2点'clock (am) to 3 o'时钟(am)改变的地方(参见this link)
你的第一次是
而你的第二次是
实际上,你的第二次是:
这显然比你的第一个晚30分钟(而不是30分钟前) .
也许这段代码可以帮助你:
*问题是如果您的String不是UTC,您可能永远不知道是否应用了时间更改因此间隔可能是一小时 .