новая дата (длинная) дает разные результаты - PullRequest
11 голосов
/ 08 августа 2011

Когда я запускаю этот код:

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 с).Почему?

[РЕДАКТИРОВАТЬ] Также часовой пояс отличается.Почему в Java используется CEST, когда он запускается из Maven, и GMT+01:00, когда он запускается из Eclipse?

Или, другими словами: как заставить Java использовать любой из них?

Ответы [ 3 ]

6 голосов
/ 08 августа 2011

Похоже, что Maven и Eclipse выбрали разные часовые пояса по умолчанию, вот и все.

Не забывайте, что Date.toString() использует часовой пояс по умолчанию.Лично я предпочел бы использовать Joda Time и, вероятно, записать значение UTC вместо местного времени:)

5 голосов
/ 08 августа 2011

Чтобы указать часовой пояс по умолчанию, вы можете установить системное свойство 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));
3 голосов
/ 08 августа 2011

Добавить:

System.out.println(TimeZone.getDefault().getDisplayName());

до расчета даты. Он должен отображать разные часовые пояса. И часовой пояс по умолчанию зависит от локали, используемой вашей JVM. Вы можете заставить JVM использовать языковой стандарт по вашему предпочтению, указав следующие параметры:

$ java -Duser.language=fr -Duser.country=CA

В Maven вы можете использовать MAVEN_OPTS переменную окружения. Также здесь - статья, описывающая, как навсегда изменить ваш язык в Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...