У меня есть программа, которая должна работать под моим локальным часовым поясом по другим причинам, но по одной процедуре я должен произвести даты с помощью SimpleDateFormat в GMT.
что самый опрятный путь состоит в том, чтобы сделать это?
Использование стандартного 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()));
Учитывая, что SimpleDateFormat
не безопасно, я «Я скажу, что в том, чтобы использовать то, чтобы использовать Joda Time вместо этого. Тогда вы можете создать один файл Fixatter (вызов сzone (dateTimezones.utc)
, чтобы указать, что вы хотите UTC), и вы отсутствуете:
private static DateTimeFormatter formatter = DateTimeFormat.forPattern(...)
.withZone(DateTimeZone.UTC);
...
String result = formatter.print(instant);
Это другая выгода, которую вы можете использовать время Joda в другом месте в Ваш код, который является всегда Хорошо :)