【发布时间】:2011-07-27 09:07:48
【问题描述】:
在A very strange date before 1970的问题中,我知道为什么两次看起来只有1s的差异,但有时我们可以得到另一个值。
例如从那个问题:
public static void main(String[] args) throws ParseException {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str3 = "1927-12-31 23:54:07";
String str4 = "1927-12-31 23:54:08";
Date sDt3 = sf.parse(str3);
Date sDt4 = sf.parse(str4);
long ld3 = sDt3.getTime() /1000;
long ld4 = sDt4.getTime() /1000;
System.out.println(ld4-ld3);
}
在Shanghai 的时区中输出将是353,但在其他时区将是1。
我的问题是,如何计算没有时区的差异?如何始终获得正确的差异?
【问题讨论】:
-
没有“正确”的区别。差异取决于时区!
-
如果您想一直使用同一个时区,您是否尝试过创建日历对象并指定您要使用的时区?
-
日历标准日历 = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
-
@Ritchie:GMT 可能仍有不连续性。
-
这里正确的差异是 1 的整个想法是错误的。正确的差是 353。时间很奇怪。处理它。