我有这段代码:
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。
那么这里有什么问题?
答案 0 :(得分:3)
虽然Date
对象确实是UTC,但您的SimpleDateFormat
可能不是。我怀疑它默认是系统时区 - 这肯定是实验所暗示的。您可以使用DateFormat.setTimeZone
更改此设置。因此,如果您的文本代表UTC日期/时间,您还应该将格式化程序的时区设置为UTC。
或者您可以使用Joda Time,这是一个通常更好的日期和时间API:)