#java #timezone #date-comparison
#java #Часовой пояс #сравнение дат
Вопрос:
У меня на сервере установлен часовой пояс в BST (британское летнее время), и дата, передаваемая в функцию, была рассчитана по UTC.
На сайте Java Oracle это просто относится к сравнению времени как «сейчас», но будет ли это время «сейчас» совпадать с установленным часовым поясом или это будет тот, который установлен на сервере, на котором он запущен?
Ответ №1:
В java.util.Date
нет часового пояса, фактически это часовой пояс JVM, в которой он запущен.
Мой совет, если вам нужно работать с часовыми поясами, используйте Joda
Ответ №2:
Подразумевается, что java.util.Date
время всегда сохраняется в UTC. Например, если вы вызываете System.currentTimeMillis()
или создаете new Date()
, внутреннее время будет в UTC. но Date.toString()
для разных часовых поясов по умолчанию будет указано разное время.
Итак, если вы передадите дату UTC в before
функцию, вы получите правильный результат независимо от часового пояса сервера.