Получить консультацию

Как в 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С с нуля – рассмотрите мой видеокурс для начинающих.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

два × 3 =

К НАЧАЛУ