1

我有这个代码:

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。

那么这里有什么问题呢?

4

1 回答 1

3

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

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

于 2010-06-29T10:21:10.833 回答