Java перевести строку в дату

Привет, я хочу преобразовать текущую дату в этот формат YYYY-MM-DD . Тем не менее, он преобразует дату в формат String , но я хочу преобразовать ее обратно в формат Date . Так может кто-нибудь посоветовать по этому поводу?

Это мой код до сих пор

6 ответов

попробуй эту функцию

Преобразовать дату в строку, используя эту функцию

Из даты преобразования в строку в Java . И снова преобразовать строку в дату

Для преобразования даты в строку проверьте эту тему

И для преобразования строки в дату попробуйте это,

Как преобразовать дату в строку и в дату снова?

В Вопросе используются старые классы даты и времени, связанные с ранними версиями Java. Эти классы теперь унаследованы и заменены классами java.time, встроенными в Java 8, Java 9 и более поздние версии.

Для определения сегодняшней даты требуется часовой пояс. В любой момент времени дата меняется по всему земному шару в зависимости от зоны.

Если не предоставлен вами, применяется текущий часовой пояс вашей JVM по умолчанию. Это значение по умолчанию может измениться в любой момент во время выполнения и поэтому ненадежно. Я предлагаю вам всегда указывать желаемый / ожидаемый часовой пояс.

Ваш желаемый формат YYYY-MM-DD соответствует стандарту ISO 8601.

Этот стандарт по умолчанию используется классами java.time при разборе / генерации строк. Таким образом, вы можете просто вызвать LocalDate::parse и LocalDate::toString без указания шаблона форматирования.

Инфраструктура java.time встроена в Java 8 и более поздние версии . Эти классы вытесняют проблемные старые классы даты и времени, такие как java.util.Date , Calendar и SimpleDateFormat .

Читайте также:  Overlord 2 не запускается c

Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .

Чтобы узнать больше, смотрите Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Есть переменная типа стринг s="05.09.2013"; пытаюсь преобразовать в тип Date . Не получается. Подскажите, пожалуйста, в чем ошибка.

2 ответа 2

Вариант автора будет работать тоже, только немного изменить надо:

String s="05.09.2013"; SimpleDateFormat format = new SimpleDateFormat(); format.applyPattern("dd.MM.yyyy"); Date docDate= format.parse(s);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками java или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.14.35771

1. Обзор

В этом уроке изучите несколько способов преобразования объектов String в объекты Date. Начните с нового Date Time API — java.time, который был представлен на Java 8, прежде чем смотреть на старый тип данных java.util.Date, также используемый для представления дат.

Чтобы закончить, мы также рассмотрим некоторые внешние библиотеки для преобразования с использованием Joda-Time и класса DateUtils из Apache Commons Lang.

2. Преобразование String в LocalDate или в LocalDateTime

LocalDate и LocalDateTime являются неизменяемыми объектами даты и времени, которые представляют дату и позднее дату и время. По умолчанию даты Java имеют формат ISO-8601, поэтому, если у нас есть строка, представляющая дату и время в этом формате, мы можем использовать parse() этих классов напрямую.

Вот немного подробнее об этом новом API.

2.1. Используя Parse API

API DateTime предоставляет методы анализа для синтаксического анализа строки, содержащей информацию о дате и времени. Чтобы преобразовать объекты String в объекты LocalDate и LocalDateTime, строка должна представлять допустимую дату или время в соответствии с ISO_LOCAL_DATE или ISO_LOCAL_DATE_TIME.

Читайте также:  Bosch classixx 5 не включается

В противном случае DateTimeParseException будет выдано во время выполнения.

В нашем первом примере можно преобразовать String в java.time.LocalDate

Подобный подход к вышеупомянутому может использоваться, чтобы преобразовать строку в java.time.LocalDateTime:

Важно отметить, что оба объекта LocalDate и LocalDateTime являются агностиками часового пояса. Однако, когда нам нужно иметь дело с датой и временем в часовом поясе, мы можем использовать метод разбора ZonedDateTime напрямую, чтобы получить определенное время в часовом поясе

Теперь давайте посмотрим, как мы конвертируем строки в пользовательский формат.

2.2. Использование API-интерфейса Parse с пользовательским форматированием

Преобразование строки с пользовательским форматом даты в объект Date является широко распространенной операцией в Java.

Для этой цели хорошо использовать класс DateTimeFormatter, который предоставляет множество предопределенных форматов и позволяет нам определить форматтер.

Начнем с примера использования одного из предопределенных форматтеров DateTimeFormatter:

В следующем примере можно создать форматтер, который применяет формат "EEE, MMM d yyyy". Этот формат определяет три символа для полного имени дня недели, одну цифру для представления дня месяца, три символа для представления месяца и четыре цифры для представления года.

Наш форматер распознает такие строки, как "Fri, 3 Jan 2003" или " Wed, 23 Mar 1994“:

2.3. Шаблоны даты и времени

Давайте рассмотрим некоторые общие шаблоны даты и времени:

  • y – Год (1996, 96)
  • M – месяц в году (июль; Июль; 07)
  • d – День месяца (1-31)
  • E – День недели (пятница, воскресенье)
  • a – маркер AM, PM
  • H – час дня (0-23)
  • h – час в am/pm (1-12)
  • m – минута в часе (0-60)
  • s – секунды в минуте (0-60)

3. Преобразование строки в java.util.Дата

До Java 8 механизм дат и времени Java предоставлялся старыми API-интерфейсами классов java.util.Date, java.util.Calendar и java.util.TimeZone, с которыми нам иногда приходится работать.

Давайте посмотрим, как преобразовать строку в Java.util.Date:

В приведенном выше примере нам сначала нужно построить объект SimpleDateFormat, передав шаблон, описывающий формат даты и времени.

Читайте также:  1000 Ампер часов на сколько хватит

Затем нам нужно вызвать метод parse (), передающий строку даты. Если переданный строковый аргумент не имеет того же формата, что и шаблон, будет создано исключение ParseException.

3.1. Добавление информации о часовом поясе в java.util.Date

Важно отметить, что java.util.Date не имеет понятия часового пояса и представляет только количество секунд, прошедших с момента Unix epoch time – 1970-01-01T00:00:00Z.

Но, когда мы печатаем объект Date напрямую, он всегда будет напечатан с часовым поясом системы Java по умолчанию.

В этом последнем примере мы рассмотрим форматирование даты и добавление сведений о часовом поясе:

Мы также можем изменить часовой пояс JVM программно, но это не рекомендуется

4. Внешние библиотеки

Теперь, когда мы хорошо понимаем, как преобразовать объекты String в объекты Date, используя новые и старые API-интерфейсы, предлагаемые базовой Java, можно взглянуть на некоторые внешние библиотеки.

4.1. Joda-Time

Альтернативой ядру Java Date и Time является JodaTime. Хотя авторы теперь рекомендуют пользователям переходить на java.time JSR, если это невозможно, то библиотека JodaTime предоставляет отличную альтернативу работе с Date и Time. Эта библиотека предоставляет практически все возможности, поддерживаемые в Java 8 Date Time.

Артефакт можно найти на Maven Central:

Вот быстрый пример работы со стандартным DateTime

Давайте также рассмотрим пример явной установки часового пояса:

4.2. Apache Commons Lang – DateUtils

Класс DateUtils предоставляет множество полезных утилит, упрощающих работу с устаревшими объектами Calendar и Date.

Артефакт commons-lang3 доступен из Maven Central

Давайте преобразуем строку даты с помощью массива шаблонов даты в java.util.Date:

5. Вывод

В этой статье мы проиллюстрировали несколько способов преобразования строк в различные типы объектов Date (с и без времени), как в простом Java, так и с использованием внешних библиотек.