У меня есть фрагмент кода, который находит разницу между двумя датами (в формате yyyy-MM-dd hh: mm: ss). Этот код запускается на нескольких серверах по всему миру. Одна из двух дат - это текущее время в конкретном часовом поясе, в котором выполняется код (время сервера), а другое - время, полученное из базы данных. если разница между этими двумя временами превышает 86400 секунд (1день), тогда она должна печатать «недействительный», иначе должна быть напечатана «valid». Проблема, с которой сталкивается код, когда я запускаю его на своем локальном компьютере, работает нормально, но когда я развертываю его на сервере в США, он учитывает время GMT, а не местное время. Везде, где выполняется код, я хочу разницу между текущим временем и временем, полученным из базы данных, и если оно больше 86400 секунд, я хочу напечатать недействительным. Как достичь этого в java? PS: Я пробовал объект Date, но его рассмотрение GMT только везде.Как найти разницу между двумя датами в секундах в разных часовых поясах
ответ
Я бы использовал GMT везде и только конвертировал в местное время для показа.
Чтобы найти разницу, преобразуйте оба раза в один и тот же часовой пояс (скажем, GMT) и воспользуйтесь разницей.
Вы можете сделать это в нижеследующем примере кода.
Date date = new Date();
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("CET"));
Date date1 = dateformat.parse(formatter.format(date));
// Set the formatter to use a different timezone
formatter.setTimeZone(TimeZone.getTimeZone("IST"));
Date date2 = dateformat.parse(formatter.format(date));
// Prints the date in the IST timezone
// System.out.println(formatter.format(date));
Теперь сравните date1 с date2
Во-первых, я согласен с ответом Питера Lawrey в там. Обычно хорошей практикой является сохранение всего времени в базе данных для одной зоны и визуализация ее со смещением для пользователя на основе локали пользователя.
Чтобы найти разницу, используйте метод getTime()
, чтобы получить время в миллисекундах от эпохи для каждой даты. Расчет разницы в 1 день составляет 86400 * 1000 миллисекунд. Или, возможно, сохраните время в миллисекундах с эпохи в базе данных и используйте процедуру/функцию БД во время извлечения.
Надеюсь, это поможет.
- 1. Разница между двумя датами в секундах варьируется в зависимости от разных часовых поясов - Swift 3
- 2. Как найти разницу между временем в разных часовых поясах в Python?
- 3. найти разницу в секундах
- 4. Как проверить разницу в секундах между двумя датами?
- 5. как рассчитать разницу между двумя датами в секундах?
- 6. Разница Android между двумя датами в секундах
- 7. Найти разницу между двумя датами в MySQL
- 8. Найти разницу между двумя датами в месяцах
- 9. PHP - Получите разницу между двумя датами в секундах
- 10. Найти разницу между двумя датами в PHP
- 11. Часы в разных часовых поясах
- 12. Как найти разницу между двумя датами
- 13. Как найти разницу между двумя датами?
- 14. Как найти разницу между двумя датами C++
- 15. Как найти разницу между двумя датами
- 16. Как сравнить время в разных часовых поясах
- 17. JScript: Как рассчитать разницу между двумя датами?
- 18. Как найти разницу между двумя датами в оракуле?
- 19. Найти разницу между двумя датами/раз
- 20. Найти разницу между двумя датами Oracle SQL
- 21. Найти разницу между двумя датами C
- 22. Проверить разницу в секундах между двумя значениями
- 23. Как использовать TimeSpan в разных часовых поясах?
- 24. Разница между двумя датами в секундах ios
- 25. время в разных часовых поясах в javascript
- 26. Рассчитать разницу между двумя датами
- 27. Как найти разницу между двумя датами в одном столбце?
- 28. Как найти часовую разницу между двумя датами в PHP?
- 29. Как найти разницу между двумя датами в JavaScript?
- 30. Как найти разницу между двумя датами в angularjs?
Будет ли работать с вами по умолчанию TimeZone ?: http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html#setDefault(java.util.TimeZone) –
Нет, установка часового пояса по умолчанию будет работать только в том случае, если код развертывается в одном часовом поясе. Мой код будет развернут на нескольких серверах по всему миру –