我有此代码:

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 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top