формат как время GMT/UTC, когда часовой пояс по умолчанию - что-то еще

У меня есть программа, которая должна работать под моим локальным часовым поясом по другим причинам, но по одной процедуре я должен произвести даты с помощью SimpleDateFormat в GMT.

что самый опрятный путь состоит в том, чтобы сделать это?

6
задан pstanton 18 January 2010 в 22:00
поделиться

2 ответа

Использование стандартного API:

Instant now = Instant.now();
String result = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
                                 .withZone(ZoneId.of("GMT"))
                                 .format(now);
System.out.println(result);

Новые экземпляры DateTimeFormatter являются неизменяемыми и могут быть использованы в качестве статических переменных.

Использование старого стандартного API:

TimeZone gmt = TimeZone.getTimeZone("GMT");
DateFormat formatter = DateFormat.getTimeInstance(DateFormat.LONG);
formatter.setTimeZone(gmt);
System.out.println(formatter.format(new Date()));
10
ответ дан 8 December 2019 в 12:59
поделиться

Учитывая, что SimpleDateFormat не безопасно, я «Я скажу, что в том, чтобы использовать то, чтобы использовать Joda Time вместо этого. Тогда вы можете создать один файл Fixatter (вызов сzone (dateTimezones.utc) , чтобы указать, что вы хотите UTC), и вы отсутствуете:

private static DateTimeFormatter formatter = DateTimeFormat.forPattern(...)
    .withZone(DateTimeZone.UTC);

...

String result = formatter.print(instant);

Это другая выгода, которую вы можете использовать время Joda в другом месте в Ваш код, который является всегда Хорошо :)

8
ответ дан 8 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: