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

Как преобразовать строку в дату 1С 8.3

Очень частая задача в программировании 1С — преобразование одного типа данных в другой. Проблема преобразования строки в дату — это произвольность написания строки. Кому-то требуется превратить строку «15.12.15» в нужное число, у кого-то значение «15 декабря 2015 года», а возможно, «15.12.2015 20:42:22».

Рассмотрим примерные варианты решения такой задачи.

Варианты преобразования даты из строки

Проще всего преобразовать строку вида «20151215204222», используя метод «Дата»:

Со строкой «15.12.2015 20:42:22» также прекрасно справляется типовой метод:

Второй вариант, если мы знаем отдельные составляющие даты в строковом формате: год, месяц, день и т.д:

Пример преобразования строки вида «2015-12-15 20:42:22»:

Если дата указан так «20:42:22 2015/12/15», можно преобразовать её следующим образом:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Преобразование строк в дату со временем

Например, этот код выведет в консоль текущую дату и время:

После запуска этого кода в консоль выводится следующее:

Взгляните на пример:

После запуска кода в консоль выводится дата, время и дата со временем:

%Y : Год (4 цифры)
%m : Месяц
%d : День месяца
%H : Часы (24-часовой формат)
%M : Минуты
%S : Секунды
%f : Миллисекунды

Метод ожидает, что все токены будут дополнены нулями.

Как видите, эта строка была обработана без проблем. Вывод следующий:

Еще несколько примеров часто используемых форматов и токенов для парса:

Работаем с часовыми поясами

Точно так же мы можем преобразовать строки с датой и временем в любой другой часовой пояс. Например, мы можем преобразовать строку «2018-06-29 17:08:00.586525+00:00» в часовой пояс «Америка/Нью-Йорк»:

Изменение часовых поясов

Как и ожидалось, время отличается: между часовыми поясами разница в пять часов.

Использование сторонних библиотек

Бывает, что сторонние библиотеки имеют более удобные методы манипуляции и сравнения дат и времени. В некоторых даже встроены часовые пояса — вам не придется импортировать лишние библиотеки.

Познакомимся с некоторыми из них.

dateutil

Как видите, с помощью модуля dateutil легко парсится практически любая строка.

Хоть это и удобно, но помните — прогнозирование формата замедляет выполнение кода. Если это критично — этот модуль не для вас.

Maya также может упростить парсинг строк и смену часовых поясов. Простые примеры:

Изменение часового пояса:

Просто, не так ли? Опробуем maya с тем же списком строк, который был в случае с dateutil :

Как видите, все форматы даты успешно пропарсены.

Arrow

Попробуем спарсить ту же строку, которая была в примере с maya:

Изменить часовой пояс можно с помощью метода to :

Как видите, строка с датой и временем конвертировалась в регион «Америка/Нью-Йорк».

Попробуем спарсить список строк из примеров выше:

Половина строк, которые закомментированы, вызовут ошибку. Вывод остальных:

Для того чтобы спарсить закомментированные строки, необходимо указать токены. Они должны помочь библиотеке понять, как правильно их парсить. Например, «MMM» — для названий месяца воде «Jan, Feb, Mar». Документацию, в которой подробно рассказывается обо всех токенах, можно прочесть здесь.

Источник

Преобразование строки в дату

Функция преобразует строку в дату.
Возможные варианты: «27/янв\2015 3-15-22», «1 янв 2005г. ::01», 20150320220315, «2/3/55», «05/3/15», «1 ФеВраЛЯ 05 г. 20:01:0», «1 янв. 2005 г ::», «1 янв 2005г ::01», «1 ФеВраЛь 05 г. 0:02:», «1 янВа 2005 г. 20:01», «02/04/2015», «20150320220315», «27.08.2015 3:15:22», «27.08-2015 5:24»

Причиной создания этой функции послужил вот такой формат даты «1 Января 2015 г. 13:25». И чтобы сто раз не возвращаться к теме, сделал что-то универсальное, дабы не тратить время в будущем.

В функции много комментариев.

Для более быстрой адаптации к др.языкам (локализация) создан массив п_мФорматы()

Кто-то заметит, что можно сделать «проще», добавив разделители даты и времени в параметры функции. Но, может попасться «свалка» с различными форматами и тут уже придется долго перебирать все варианты. Поэтому я остановился на множественном «Поиск и Замене»(СтрЗаменить()) вероятных разделителей.

Также, задумывалось, что будут возвращаться параметрами функции (Год, Месяц, День. ), но в последствии я от этого отказался. В коде присутствуют остатки от этой затеи, которые не влияют на скорость,а лишь несколько строк(присвоение значений промежуточным переменным) можно сократить.

Конечно, замечания и критика приветствуются. Спасибо.

Специальные предложения

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

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

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

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

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

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

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

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

конструктор форматной строки для даты: ДФ=’d ММММ yyyy «г.» чч:мм’

Примеры использования
echo FormatDateFromDB(’01/23/2013′, ‘DD MMMM YYYY’); // вернет 23 Enero 2013, если язык сайта испанский

echo FormatDateFromDB(‘7 June 2012 12:00pm’, ‘DD.MM’); // вернет 07.06 для любого языка

(9) premier, (9) premier, вы протестируйте на нескольких сотнях тыщ и будете удивлены. Только не пакетную передачу, а по одной переменной.

))) Блин. вы занудствуете. Если вам известно, что «2/3/55» это время, так передайте в функцию «1/1/01 «+»2/3/55» и не нужны никакие форматы. Вам же известно, что это время. если, конечно, вы не Чумак или Кашпировский ))) Могли бы добавить критики, что функция не отрабатывает «// 2/3/55», а такой «2/3/55 //» делает )) Ну, я же надеялся на вас )

Источник

Чтобы анализировать строки для преобразования их в объекты DateTime, нужно указать, как значения даты и времени представлены в текстовом формате. Для различных языков и региональных параметров значения дня, месяца и года приводятся в разном порядке. В одних представлениях времени используется 24-часовой формат, в других же указываются значения AM и PM. В одних приложениях требуется только дата. В других — только время. А в некоторых нужно указывать и дату, и время. Методы преобразования строк в объекты DateTime позволяют предоставлять подробные сведения о требуемых форматах и элементах дат и времени, которые необходимы для вашего приложения. Есть три подзадачи для правильного преобразования текста в DateTime:

Методы Parse и TryParse позволяют преобразовать много стандартных представлений даты и времени. Методы ParseExactи TryParseExact позволяют преобразовать строковое представление, соответствующее шаблону, указанному в строке формата даты и времени. (Дополнительные сведения см. в статьях Строки стандартных форматов даты и времени и Строки настраиваемых форматов даты и времени.)

Текущий объект DateTimeFormatInfo обеспечивает более точный контроль над тем, как текст должен интерпретироваться в качестве даты и времени. В свойствах DateTimeFormatInfo описываются разделители даты и времени, названия месяцев, дней и эр, а также формат для обозначения AM и PM. Объект DateTimeFormatInfo в текущем потоке представляет текущие язык и региональные параметры. Если требуется задать определенные язык и региональные параметры или настраиваемые параметры, укажите для метода анализа параметр IFormatProvider. Для параметра IFormatProvider следует указать объект CultureInfo, представляющий язык и региональные параметры, или объект DateTimeFormatInfo.

В тексте, представляющем дату и время, могут отсутствовать некоторые сведения. Например, большинство пользователей будет считать, что дата «12 марта» относится к текущему году. Аналогичным образом, «март 2018 г.» представляет месяц март 2018 года. Текст, представляющий время, часто включает только часы, минуты и обозначение AM или PM. При помощи методов анализа эти отсутствующие данные обрабатываются с использованием обоснованных значений по умолчанию:

Если в строке есть дата, она должна включать месяц и день или год. Если указано время, значение должно содержать час и минуты или обозначение AM либо PM.

Поставщик формата также используется для интерпретации неоднозначных числовых дат. Например, в строке «02/03/04» неясно, какие компоненты соответствуют месяцу, дню и году. Такие компоненты интерпретируются согласно их порядку расположения в схожих форматах даты в поставщике формата.

Parse

Ниже приведен пример использования метода DateTime.Parse для преобразования string в DateTime. В этом примере используются язык и региональные параметры, связанные с текущим потоком. Если класс CultureInfo, связанный с текущим значением языка и региональных параметров, не может выполнить синтаксический анализ исходной строки, создается исключение FormatException.

Все примеры C# в этой статье выполняются в браузере. Нажмите кнопку Выполнить, чтобы просмотреть выходные данные. Вы можете поэкспериментировать, изменяя их значения.

Эти примеры для C# и Visual Basic см. в репозитории с документацией GitHub.

Кроме того, вы можете явно определить язык и региональные параметры, соглашения о форматировании для которых используются при анализе строки. Укажите один из стандартных объектов DateTimeFormatInfo, возвращенных свойством CultureInfo.DateTimeFormat. В приведенном ниже примере поставщик формата используется для анализа строки на немецком языке в DateTime. Для представления языка и региональных параметров de-DE создается CultureInfo. Этот объект CultureInfo обеспечивает успешный анализ определенной строки. Это устраняет необходимость задания каких-либо параметров в CurrentCulture потока CurrentThread.

Для указания поставщиков пользовательских форматов можно использовать перегрузки метода Parse. Но такой метод не поддерживает анализ нестандартных форматов. Вместо этого используйте метод ParseExact для анализа даты и времени, выраженных в нестандартном формате.

В приведенном ниже примере перечисление DateTimeStyles указывает, что текущие значения даты и времени не нужно добавлять в DateTime для неуказанных полей.

Источник

Преобразование дат из текстового формата в формат даты

В некоторых случаях даты могут быть отформатированы и храниться в ячейках в виде текста. Например, вы могли ввели дату в ячейку, отформатированную как текст, или данные были импортированы или вклеированы из внешнего источника данных как текст.

Поскольку функция проверки ошибок в Excel распознает даты в текстовом формате с двузначным номером года, можно воспользоваться средством автозамены и преобразовать их в даты в формате даты. Для преобразования большинства других типов текстовых дат в даты можно использовать функцию ДАТАVALUE.

При импорте данных в Excel из другого источника или при вводе дат с двузначным номером года в ячейки, которые ранее были отформатированы как текст, в левом верхнем углу ячейки может появиться маленький зеленый треугольник. Этот индикатор ошибки указывает на то, что дата хранится в текстовом формате, как показано в данном примере.

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

С помощью индикатора ошибки можно преобразовать даты из текста в формат даты.

Примечания: Сначала убедитесь, что в Excel включена Excel. Для этого:

Щелкните Файл > Параметры > Формулы.

В Excel 2007 нажмите кнопку Microsoft Office Как перевести строку в дату и выберите Excel Параметры > Формулы.

В области «Проверка ошибок» проверьте, включить фоновую проверку ошибок. Все найденные ошибки помечаются треугольником в левом верхнем углу ячейки.

В области Правила проверки ошибоквыберите ячейки, содержащие годы, представленные 2 цифрами.

Выполните эту процедуру, чтобы преобразовать дату в текстовом формате в обычную дату:

Выделите ячейку или диапазон смежных ячеек с индикатором ошибки в верхнем левом углу. Дополнительные сведения см. в статье Выбор ячеек, диапазонов, строк и столбцов на сайте.

Совет: Чтобы отменить выделение ячеек, щелкните любую ячейку на листе.

Нажмите кнопку ошибки, которая появляется рядом с выбранными ячейками.

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

В меню выберите команду Преобразовать XX в 20XX или Преобразовать XX в 19XX. Если вы хотите отклонять индикатор ошибки, не преобразовав число, нажмите кнопку Игнорировать ошибку.

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

Текстовые даты с двузначным номером года преобразуются в стандартные даты с четырехзначным номером года.

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

После преобразования ячеек с текстовыми значениями можно изменить внешний вид дат путем применения формата даты.

Если на вашем компьютере есть даты, которые, возможно, были импортированы или в скобки, выглядят как числа, как по рисунку ниже, лучше отформатировать их так, чтобы они были краткими или длинными. Формат даты также будет полезен, если вы хотите отфильтровать, отсортировать или использовать его в вычислениях с датами.

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

Вы выберите ячейку, диапазон ячеев или столбец, которые нужно переформатировать.

Щелкните Числовом формате и выберите нужный формат даты.

Краткий формат даты выглядит так:

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

Длинная дата содержит дополнительные сведения, как по рисунку:

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

Чтобы преобразовать текстовую дату в ячейке в числовой, используйте функцию ДАТА.ДАТА.В.. Затем скопируйте формулу, выделите ячейки с датами в текстовом формате и применив к ним формат даты с помощью специальной ветви.

Выберите пустую ячейку и убедитесь, что ее число имеет форматОбщий.

В пустой ячейке сделайте следующее.

Щелкните ячейку, содержащую дату в текстовом формате, которую следует преобразовать.

Нажмите ввод, и функция ДАТАVALUE возвращает порядковый номер даты, представленной текстовой датой.

Что такое Excel серийный номер?

В Excel даты хранятся в виде порядковых номеров, что позволяет использовать их в вычислениях. По умолчанию: 1 января 1900, порядковый номер 1, а 1 января 2008 г. — число 39448, поскольку через 39 448 дней после 1 января 1900.To скопируйте формулу преобразования в диапазон последовательных ячеек, вы выберите ячейку, содержащую введенную формулу, и перетащите его Как перевести строку в датучерез диапазон пустых ячеек, который соответствует размеру диапазона ячеек, содержащих текстовые даты.

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

Вы выберите ячейку или диапазон ячеек с серийными номерами, а затем на вкладке Главная в группе Буфер обмена нажмите кнопку Копировать.

Сочетания клавиш: Можно также нажать CTRL+C.

Выделите ячейку или диапазон ячеек, которые содержат даты в текстовом формате, и на вкладке Главная в группе Буфер обмена нажмите стрелку под кнопкой Вставить и выберите команду Специальная вставка.

В диалоговом окне Специальная вставка в разделе Вставить выберите параметр Значения и нажмите кнопку ОК.

На вкладке Главная нажмите кнопку запуска всплывающее окно рядом с кнопкой Число.

В поле Категория выберите пункт Дата, после чего укажите необходимый формат даты в списке Тип.

Чтобы удалить порядковые номера после успешного преобразования всех дат, выберите ячейки, содержащие их, и нажмите кнопку DELETE.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Источник

Добавить комментарий

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