日期差异包括时区偏移,有什么不对?

时间:2010-06-29 10:17:39

标签: java datetime date simpledateformat

我有这段代码:

Date now = new Date();
// the string is in UTC format, so a UTC date must be constructed, I don't know if that happens in this format
Date measure = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(utcDateTime); 
long diff = now.getTime() - measure.getTime();
 if (diff < 1000* 60 * 15) {
   // measure is less then 15 minutes recent
   do some work
 }

当我得到差异时,它包含时区。我知道Date对象内部是UTC。

那么这里有什么问题?

1 个答案:

答案 0 :(得分:3)

虽然Date对象确实是UTC,但您的SimpleDateFormat可能不是。我怀疑它默认是系统时区 - 这肯定是实验所暗示的。您可以使用DateFormat.setTimeZone更改此设置。因此,如果您的文本代表UTC日期/时间,您还应该将格式化程序的时区设置为UTC。

或者您可以使用Joda Time,这是一个通常更好的日期和时间API:)