Дополнительно
Дата конвертации Java в строку мирового
На языке Java.утиль.Дата метод toString (метод)
отображает дату в местном часовом поясе.
Существует несколько общих сценариев, в которых мы хотим, чтобы данные, которые будут напечатаны в мирового, в том числе журналы, экспорт данных и коммуникации с внешними программами.
- Что's самый лучший способ создать строковое представление `Ява.утиль.Дата в UTC?
- Как заменить Дж.у.Даты `метод toString (формат), которые еще'т сортируемый (спасибо, @JonSkeet!) С лучше формат?
Дополнениями
Я думаю, что стандартный способ печати даты в пользовательском формате и часовом поясе довольно утомительно:
final Date date = new Date();
final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS zzz";
final SimpleDateFormat sdf = new SimpleDateFormat(ISO_FORMAT);
final TimeZone utc = TimeZone.getTimeZone("UTC");
sdf.setTimeZone(utc);
System.out.println(sdf.format(date));
Я искал один-лайнер, как:
System.out.println(prettyPrint(date, "yyyy-MM-dd'T'HH:mm:ss.SSS zzz", "UTC"));
28
7
и Java.время
В Java 8 и выше у нас есть новый Ява.время пакет встроенный (туториал). Вдохновленный Joda времени, определенный JSR 310, и расширен ThreeTen-Экстра проекта.
Лучшим решением является сортировать дате-времени объектов, а не строк. Но если вы должны работать в строки, Читать далее.
В
миг
представляет собой момент на временной шкале, в основном в мирового (см. Класс DOC для точных деталей). Ометод toString
реализация использует datetimeformatter с это.Формат ISO_INSTANT`]9 по умолчанию. Этот формат включает в себя ноль, три, шесть или девять цифр цифр, сколько нужно для отображения доли секунды до НС точности.Если вы должны взаимодействовать с классом старого "дата", конвертировать в/из Java.время с помощью новых методов, добавленных в старые классы. Пример: дата::toInstant`.
Возможно, вы захотите использовать другой форматтер, если вам нужен последовательный ряд цифр в дробной второй или если вы не в долях секунды.
Другому маршруту, Если вы хотите усечение долей секунды, чтобы использовать
ZonedDateTime
вместомгновенный
, называя ее способ сменить фракцию на ноль.Обратите внимание, что мы должны указать часовой пояс для
ZonedDateTime
(отсюда и название). В нашем случае это означает, что Мирового. ПодклассZoneID
,zoneoffset в
, имеет удобный постоянная для мирового. Если мы опустим часовом поясе, в JVM текущий часовой пояс неявно применяется.Joda Времени
Обновление: проект Joda времени находится в режиме технического обслуживания, с командой, консультирование миграции на Java.классы время.
Легко, если с помощью Joda времени 2.3 библиотека. ИСО 8601 является форматирование по умолчанию.
Зоны ## Времени
В приведенном ниже примере кода, обратите внимание, что я указании часового пояса, а не в зависимости от часового пояса по умолчанию. В этом случае, я'м задании мирового на ваш вопрос. Z на конце, говорят как "зулусы" Ну, значит, не смещение часового пояса от UTC.
Пример # Код#
Выход...
в
Следующие полезные замечания, я'вэ полностью перестроен дата праматерии. Использование предполагается:
Если вы считаете этот код полезным, я могу опубликовать исходный и банку в GitHub.
Использование ###
Код
(Этот код является также предметом вопрос на проверку кода клиент StackExchange)
Следующий упрощенный код, основанный на принято отвечать выше, работал для меня:
Я надеюсь, что это помогает кто-то.
и Java.время.Мгновенный
Просто используйте
МиГ
отЯва.время
.Это просто напечатано:
Мгновенный.метод toString
всегда дает мирового времени.Выход обычно сортные, но бывают несчастные исключения.
метод toString
дает достаточно группы из трех знаков после запятой для отображения точности она имеет. На Java 9 на моем Mac точностьмгновенный.теперь ()
, кажется, микросекунды, но мы должны ожидать, что приблизительно в одном случае из тысячи это будет хит целое число миллисекунд и печать только трех знаков после запятой. Строки с неравным количеством десятичных знаков будет отсортирована в неправильном порядке (если вы пишете пользовательский компаратор это учитывать).МиГ
является одним из классов в языке Java.времени, современных Java и API времени, которое я настоятельно рекомендую вам использовать вместо класса устаревшиедаты
. `в Java.время-это встроенные в Java 8 и выше, а также были бэкпортированы в Java 6 и 7.Если кинокомпании xStream является зависимостью, попробуйте:
Почему бы просто не использовать Java.текст.Класса simpledateformat ?
Или увидеть: http://www.tutorialspoint.com/java/java_date_time.htm
Ну если вы хотите использовать Java.утиль.Дата только, здесь есть небольшая хитрость вы можете использовать:
Строки как datestring = долго.метод toString(дата.Мирового(дата.возвратите(), дата.getMonth(), дата.getdate(), то дата.getHours(), дата.getMinutes(), дата.getSeconds()));