Разница дат включает смещение часового пояса, что не так? - PullRequest
1 голос
/ 29 июня 2010

У меня есть этот код:

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 Ответ

3 голосов
/ 29 июня 2010

Хотя объект Date действительно находится в UTC, ваш SimpleDateFormat может и не быть.Я подозреваю, что по умолчанию это системный часовой пояс - это, безусловно, то, что эксперименты предложатВы можете изменить это, используя DateFormat.setTimeZone.Поэтому, если ваш текст представляет дату / время в формате UTC, вам следует также установить часовой пояс форматера UTC.

Или вы можете использовать Joda Time , что в целом является лучшей датой.и время API:)

...