Преобразование строки в дату
Есть переменная типа стринг s=»05.09.2013″; пытаюсь преобразовать в тип Date . Не получается. Подскажите, пожалуйста, в чем ошибка.
SimpleDateFormat format = new SimpleDateFormat(); format.applyPattern("dd.mm.yyyy"); Date docDate= format.parse(docDate);
Отслеживать
141 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
задан 16 апр 2013 в 9:23
Sergey4590 Sergey4590
447 6 6 золотых знаков 17 17 серебряных знаков 39 39 бронзовых знаков
Как указал @GlyyK буквы m не того размера. (m — минуты)
16 апр 2013 в 9:41
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Отслеживать
141 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
ответ дан 16 апр 2013 в 9:31
607 6 6 серебряных знаков 17 17 бронзовых знаков
Вариант автора будет работать тоже, только немного изменить надо:
String s=»05.09.2013″; SimpleDateFormat format = new SimpleDateFormat(); format.applyPattern(«dd.MM.yyyy»); Date docDate= format.parse(s);
Отслеживать
ответ дан 16 апр 2013 в 10:19
418 2 2 серебряных знака 8 8 бронзовых знаков
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как преобразовать строку в дату java
Конвертация строки в дату в Java может быть выполнена с помощью класса SimpleDateFormat :
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateConversionExample public static void main(String[] args) String dateStr = "2022-04-01"; DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); try Date date = formatter.parse(dateStr); > catch (ParseException e) e.printStackTrace(); > > >
В этом примере мы
- импортируем классы DateFormat , SimpleDateFormat , Date и ParseException
- в методе main мы объявляем строку, содержащую дату в формате yyyy-MM-dd
- создаем объект SimpleDateFormat для конвертации этой строки в дату и вызываем метод parse() этого объекта, чтобы получить объект Date
- если входная строка не соответствует заданному формату, метод parse() выкинет исключение ParseException , которое мы обрабатываем с помощью блока catch
Преобразование строки в дату в Java
Разработчики на Java часто сталкиваются с задачей преобразования строки в дату. Например, есть строка ’21 декабря 2021 года’, и требуется преобразовать ее в экземпляр класса Date .
Преобразование такого рода обычно выполняется с помощью класса SimpleDateFormat из библиотеки Java. Этот класс позволяет задать шаблон даты и времени, а затем использовать его для преобразования строки в дату.
Пример
import java.text.SimpleDateFormat; import java.util.Date; public class Main < public static void main(String[] args) throws Exception < String strDate = "21 декабря 2021 года"; SimpleDateFormat format = new SimpleDateFormat("d MMMM yyyy года"); Date date = format.parse(strDate); System.out.println(date); >>
В этом примере используется шаблон «d MMMM yyyy года» , который соответствует формату строки даты.
Разбиение даты на составляющие
После того, как строка была преобразована в дату, можно разбить ее на составляющие — день, месяц и год. Для этого можно воспользоваться следующими методами класса Date :
- getDate() — возвращает день месяца
- getMonth() — возвращает месяц (начиная с 0, т.е. январь — это 0, февраль — 1, и т.д.)
- getYear() — возвращает год (с учетом смещения 1900 годов, т.е. 2021 год возвращается как 121)
Пример
import java.text.SimpleDateFormat; import java.util.Date; public class Main < public static void main(String[] args) throws Exception < String strDate = "21 декабря 2021 года"; SimpleDateFormat format = new SimpleDateFormat("d MMMM yyyy года"); Date date = format.parse(strDate); System.out.println("День: " + date.getDate()); System.out.println("Месяц: " + date.getMonth()); System.out.println("Год: " + (1900 + date.getYear())); >>
Преобразование даты в миллисекунды
Если требуется преобразовать дату в миллисекунды (например, для сравнения дат), можно использовать метод getTime() класса Date .
Пример
import java.text.SimpleDateFormat; import java.util.Date; public class Main < public static void main(String[] args) throws Exception < String strDate = "21 декабря 2021 года"; SimpleDateFormat format = new SimpleDateFormat("d MMMM yyyy года"); Date date = format.parse(strDate); long millis = date.getTime(); System.out.println("Миллисекунды: " + millis); >>
Таким образом, преобразование строки в дату в Java выполняется с помощью класса SimpleDateFormat , а разбиение даты на составляющие и преобразование в миллисекунды — с помощью методов класса Date .
Как в 1С преобразовать строку в дату
Этот вопрос на первый взгляд достаточно простой. Но стоит только посмотреть на все возможные строковые представления дат (форматы дат), то задача получения даты из строки уже не кажется такой легкой. Ниже несколько примеров, как записывается дата в разных странах:
- Россия: DD.MM.YYYY Пример: 24.12.2021
- США: MM-DD-YYYY Пример: 12.24.2021
- Венгрия: YYYY-MM-DD Пример 2021-12-24
Чтобы еще больше запутать ситуацию Чтобы внести единообразие в написание даты, был разработан стандарт ISO 8601, который предусматривает запись даты от более значимых чисел к менее значимым – год, месяц, день… и так далее. Пример: 20221224123456. Для удобства можно пользоваться разделителями. Пример
2022-12-24T12:34:56. Это важный момент, и ниже мы к нему вернемся.
Способы преобразования даты из строки
Метод Дата(), вариант по строке
Простейший способ, который подходит, если строка с датой каноническому формату YYYYMMDDhhmmss – это использовать метод Дата(). Пример:
Дата("20211231123456")
Получим значение с типом дата: 31.12.2021 12:34:56
Также, этот метод подходит, если строка с датой записана в локальном формате (т.е. совпадает с форматом даты операционной системы).
Например, в случае если в ОС выбран русский язык, то можно получить из строки дату вот так:
Дата("24.12.2022 12:34:56")
Результат будет 24.12.2022 12:34:56
А если у вас в настройках выбран формат Английский (США), то строковое представление даты должно быть другим:
Дата("12/24/2022 01:34:56 PM")
Важно! В случае использования строки с датой в локальном формате, она должна точно соответствовать этому формату! Иначе метод выдаст ошибку “Преобразование значения к типу Дата не может быть выполнено”.
Метод Дата(), вариант по составляющим
Если нам известны составные части даты – год, месяц, день и т.д., можно использовать конструктор даты по составляющим. Задавать параметры можно как в виде строки, так и числом. Таким образом можно собрать дату из частей. Сами части можно получить различными способами – например, использовать преобразование строки в массив подстрок с помощью метода СтрРазделить().
Дата("2021", "12", "24", "12", "34", "56")
Как получить дату из строки с разделителями?
Вот мы и вернулись к вопросу – что делать, когда строка даты содержит разделители – двоеточия, слеши, дефисы или другие. Можно поочередно очищать дату от лишних символов с помощью метода СтрЗаменить, например
ДатаСтрокой = "2021/12-31 12:34:56" ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "-", ""); ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "/", ""); ДатаСтрокой = СтрЗаменить(ДатаСтрокой, ":", "");
Но есть более интересный способ – использование двойного преобразования строки – сперва в массив, а затем обратно:
СтрСоединить(СтрРазделить(ДатаСтрокой, "-/ :"), "");
Что делает этот код:
Мы сперва преобразуем строку в массив подстрок, разделяя по символам-разделителям пр помощи метода СтрРазделить. В нашем примере это пробел, слеш, двоеточие и дефис. Если нам нужно будет добавить какие-то другие символы – можно будет просто дополнить строку символов-разделителей.
А дальше мы обратно собираем из массива строку при помощи метода СтрСоединить;
Надеюсь, статья поможет вам разобраться, как преобразовать строку в дату. Если же хотите получить более цельное представление о разработке в 1С с нуля – рассмотрите мой видеокурс для начинающих.