我很难过.这对我来说毫无意义.以下代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); long lFirst = 1383460981000L; long lSecond = 1383464581000L; System.out.println(lFirst); System.out.println(lSecond); java.util.Date first = new Date(lFirst); java.util.Date second = new Date(lSecond); System.out.println(sdf.format(first)); System.out.println(sdf.format(second)); System.out.println(first.getTime()); System.out.println(second.getTime()); System.out.println("Diff" + (first.getTime() - second.getTime())); System.out.println("Hours diff: " + (((float)(second.getTime()-first.getTime()))/1000f/60f/60f));
产生以下输出:
1383460981000 1383464581000 2013-11-03 01:43:01.000 2013-11-03 01:43:01.000 1383460981000 1383464581000 Diff-3600000 Hours diff: 1.0
这两个不同的长值如何产生完全相同的日期?我在执行从一种数据库类型到另一种数据库类型的数据迁移并验证结果时遇到了这种情况.我无法理解我所看到的验证失败,所以我创建了一小段代码来比较这些值,确定无疑.虽然我愿意接受我的数据库中存在一些时区怪异,但这似乎不是这个代码示例中的问题.
这可能是夏令时变化的时刻:时间从凌晨1点到凌晨2点,再次回到凌晨1点.所以,如果你加1小时到1:43:01,你会回到1:43:01.