Новая дата (длинная) дает разные результаты
Когда я запускаю этот код:
System.out.println( "XXX date=" + new Date( 1311781583373L ) );
Я получаю этот результат в Eclipse JUnit runner:
XXX date=Wed Jul 27 16:46:23 GMT+01:00 2011
и этот результат в Maven из командной строки:
XXX date=Wed Jul 27 17:46:23 CEST 2011
Как вы можете видеть, час отличается.
(тот же компьютер, такая же версия Java, может быть, 30 секунд). Почему?
[EDIT] Также часовой пояс отличается. Почему Java использует CEST
, когда она начиналась с Maven и GMT+01:00
при запуске из Eclipse?
Или иначе: как я могу заставить Java использовать либо?
Ответы
Ответ 1
Чтобы указать часовой пояс по умолчанию, вы можете установить системное свойство user.timezone
. Вы можете сделать это, передав его как аргумент JavaVM (вам может потребоваться изменить эквивалентный конфигурационный файл eclipse.ini или Maven):
-Duser.timezone=<your preferred timezone>
... или путем его программного программирования:
System.setProperty("user.timezone", "<your preferred timezone>");
Или, если это удобно, вы можете указать часовой пояс, который вы используете каждый раз при распечатке даты:
DateFormat myDateFormat = new SimpleDateFormat("<insert date format string here>");
myDateFormat.setTimeZone(TimeZone.getTimeZone("<your preferred timezone>"));
....
System.out.println(myDateFormat.format(yourDate));
Ответ 2
Похоже, что Maven и Eclipse выбрали разные часовые пояса по умолчанию, что все.
Не забывайте, что Date.toString()
использует часовой пояс по умолчанию. Я лично предпочел бы использовать Joda Time и, вероятно, зарегистрировать значение UTC вместо локального времени:)
Ответ 3
Добавить
System.out.println(TimeZone.getDefault().getDisplayName());
перед вычислением даты. Он должен отображать разные часовые пояса. И часовой пояс по умолчанию основан на локали, используемой вашей JVM. Вы можете заставить JVM использовать язык вашего предпочтения, предоставив ему следующие параметры:
$ java -Duser.language=fr -Duser.country=CA
В Maven вы можете использовать переменную среды MAVEN_OPTS
. Кроме того, здесь - статья, в которой описывается, как постоянно менять свой язык в Windows.