日期差异包括时区偏移,怎么了?
-
01-10-2019 - |
题
我有此代码:
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
}
当我获得差异时,它包括时区。我知道内部的日期对象是UTC。
那这里怎么了?
解决方案
同时 Date
对象确实在UTC中,您 SimpleDateFormat
未必。我怀疑它默认为系统时区 - 这无疑是实验所暗示的。您可以使用 DateFormat.setTimeZone
. 。因此,如果您的文本代表UTC日期/时间,则应将格式化器的时区设置为UTC。
或者您可以使用 乔达时间, ,这通常是更好的日期和时间API :)
不隶属于 StackOverflow