У меня есть эти две строки в качестве входных строкSimpleDateFormatter возвращает два разных часовых поясов
03/12/16
03/14/16
Я делаю одного SimpleDateFormatter объект, чтобы получить разницу дат, как этот
DateFormat formatter = new SimpleDateFormat("MM/dd/yy",Locale.US);
Date dateChkIn = formatter.parse("03/12/16");
System.out.println("Checkin date at nights check - "+dateChkIn.toString());
Date dateChkOut = formatter.parse("03/14/16");
System.out.println("Checkout date at nights check - "+dateChkOut.toString());
Long numberOfNghtsCalc = ((dateChkOut.getTime() - dateChkIn.getTime())/86400000L);
System.out.println("number of nigts calculated - "+ numberOfNghtsCalc);
Ниже мой выход на сервере
Checkin date at nights check - Sat Mar 12 00:00:00 EST 2016
Checkout date at nights check - Mon Mar 14 00:00:00 EDT 2016
number of nigts calculated - 1
Оценка: ected выход числа nigts вычисленного - 2 Пожалуйста, обратите внимание на две различные временных зоны, которые вернулись из форматере
Обновление: 13-Mar-2016 рассматриваются как DST меняющейся дата. Поэтому мой расчет становится неправильным. (Разделить на 86400000L)
Start либо с помощью Java-8 в Time API или JodaTime вычислить разницу между датами ... вам удалось пересечь границу дневного сбережения? – MadProgrammer
@MadProgrammer Я ценю ваш комментарий. Но моя система использует Java 1.5. Этот код находится в моей рабочей среде. Все это время; он работал отлично. Внезапно это произошло. –
Ну, Joda-Time поддерживает Java 5, но вы даже можете использовать 'Calendar' – MadProgrammer