Я хочу преобразовать java.util.Date
объект вString
в Java.
Формат 2010-05-30 22:15:52
java
date
formatting
java.util.date
novicePrgrmr
источник
источник
Date
в 2019 году. Этот класс плохо спроектирован и давно устарел. Вместо этого используйтеInstant
или другой класс из java.time, современный API даты и времени Java .Ответы:
Преобразовать дату в строку, используя
DateFormat#format
метод:С http://www.kodejava.org/examples/86.html
источник
Calendar
вместо простогоnew Date()
? Есть ли разница?MM/dd/yyyy
Формат глупо и сломан. Не используйте его. Всегда используйтеdd/MM/yyyy
илиyyyy-MM-dd
.yyyy-MM-dd
везде, но что вы можете сделать?).источник
Commons-lang DateFormatUtils полон вкусностей (если у вас есть commons-lang в вашем пути к классам)
источник
null
проверка.ТЛ; др
java.time
Современный способ заключается в использовании классов java.time, которые теперь вытесняют проблемные старые унаследованные классы даты и времени.
Сначала конвертируйте
java.util.Date
вInstant
.Instant
Класс представляет собой момент на шкале времени в формате UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).Преобразование в / из java.time выполняется новыми методами, добавленными к старым классам.
И твой
java.util.Date
иjava.time.Instant
в UTC . Если вы хотите видеть дату и время как UTC, пусть будет так. ВызовtoString
для генерации строки в стандартном формате ISO 8601 .Для других форматов вам нужно превратить ваш
Instant
в более гибкийOffsetDateTime
.Посмотрите, как работает этот код на IdeOne.com .
Чтобы получить строку в желаемом формате, укажите
DateTimeFormatter
. Вы можете указать пользовательский формат. Но я бы использовал один из предопределенных форматеров (ISO_LOCAL_DATE_TIME
) и заменил быT
в его выводе пробел.Кстати, я не рекомендую такой формат, когда вы намеренно теряете смещение от UTC или информацию о часовом поясе. Создает неоднозначность относительно значения даты-времени этой строки.
Также остерегайтесь потери данных, поскольку любая дробная секунда игнорируется (эффективно усекается) в представлении вашей строки значения даты и времени.
Чтобы увидеть тот же момент через призму часов определенного региона , примените a,
ZoneId
чтобы получить aZonedDateTime
.Чтобы создать форматированную строку, сделайте то же, что и выше, но замените
odt
наzdt
.Если этот код выполняется очень много раз, вы можете захотеть быть более эффективным и избегать вызова
String::replace
. Удаление этого вызова также делает ваш код короче. При желании укажите свой собственный шаблон форматирования в своем собственномDateTimeFormatter
объекте. Кэшируйте этот экземпляр как константу или член для повторного использования.Примените этот форматер, передав экземпляр.
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые классы даты и времени , такие как
java.util.Date
,.Calendar
, иjava.text.SimpleDateFormat
.Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на java.time.
Чтобы узнать больше, смотрите Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений.
Большая часть функциональности java.time перенесена на Java 6 и 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP (см. Как использовать… ).
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time.
источник
Z
используется вместо+00:00
по умолчанию. Я исправил ответ, спасибо. К вашему сведению, это означает одно и то же:Z
произносится «Зулу» означает смещение нуля часов, минут и секунд, то же самое, что и+00:00
. Стандарт ISO 8601 поддерживает оба стиля.atOffset
метод наInstant
класс в Java 8. См Javadoc:Instant::atOffset
. В Java 8Instant.now().atOffset( ZoneOffset.UTC ).toString()
будет выполняться вызов like . Проверьте своиimport
заявления. Убедитесь, что ваш IDE / проект настроен для запуска Java 8 или более поздней версии, а не более ранней версии Java. Смотрите код запуска в прямом эфире на IdeOne.com: ideone.com/2Vm2O5Альтернативные однострочники в простой старой Java:
При этом используется Formatter и относительное индексацию вместо
SimpleDateFormat
которого не поточно- , кстати.Чуть более повторяющийся, но нужно только одно утверждение. Это может быть удобно в некоторых случаях.
источник
Почему вы не используете Joda (org.joda.time.DateTime)? Это в основном однострочно.
источник
DateTime
объекта.new DateTime( currentDate , DateTimeZone.forID( "America/Montreal" ) )
Похоже, вы ищете SimpleDateFormat .
Формат: гггг-мм-дд кк: мм: сс
источник
HH
(0-23) встречается чаще.В одном кадре;)
Чтобы получить дату
Чтобы получить время
Чтобы узнать дату и время
Удачного кодирования :)
источник
java.util.Date
,java.util.Calendar
иjava.text.SimpleDateFormat
теперь унаследованные , вытеснены классами java.time, встроенными в Java 8 и Java 9. См. Руководство Oracle .источник
Самый простой способ его использования заключается в следующем:
где «гггг-мм-дд'т'чч: мм: сс» - формат даты чтения
выходной: вс 14 апреля 16:11:48 EEST 2013
Примечания: ЧЧ против чч - ЧЧ относится к 24-часовому формату времени - чч относится к 12-часовому формату
источник
Если вам нужно только время с даты, вы можете просто использовать функцию String.
Это автоматически сократит временную часть строки и сохранит ее внутри
timeString
.источник
Вот примеры использования нового Java 8 Time API для форматирования устаревшего
java.util.Date
:Приятно,
DateTimeFormatter
что его можно эффективно кэшировать, поскольку он поточно-ориентирован (в отличие отSimpleDateFormat
).Список предопределенных форматов и ссылка на шаблон .
Кредиты:
Как анализировать / форматировать даты с LocalDateTime? (Java 8)
Java8 java.util.Date преобразование в java.time.ZonedDateTime
Мгновенный формат в строку
В чем разница между java 8 ZonedDateTime и OffsetDateTime?
источник
Попробуй это,
Вывод:
Для получения дополнительной информации о форматировании даты и времени в Java см. Ссылки ниже.
Справочный центр Oracle
Пример даты и времени в Java
источник
источник
Давай попробуем это
Или функция полезности
Из даты конвертации в строку в Java
источник
источник
источник
Вариант одной линии
Эта опция позволяет легко записать фактическую дату в одну строку.
источник
java.util.Date
,java.util.Calendar
иjava.text.SimpleDateFormat
теперь унаследованные , вытеснены классами java.time, встроенными в Java 8 и более поздние версии . Смотрите Учебник по Oracle .2019-20-23 09:20:22
- месяц 20 ??) (2) Я не вижу, чтобы в ответе было что-то, что еще не отражено в других ответах. (3) Пожалуйста, не учите детей пользоваться давно устаревшим и печально известным хлопотнымSimpleDateFormat
занятием. По крайней мере, не в качестве первого варианта. И не без оговорок. Сегодня у нас намного лучше вjava.time
современном API даты и времени Java и егоDateTimeFormatter
.