Процедура ПреобразованиеДатыВДатуJSON() // Пример: 12.08.2023 09:15:29 ТестДата = Дата("20230812091529"); // Вариант записи - "ЛокальнаяДата" // Локальная дата без указания часового пояса. // // Преобразует дату в "2023-08-12T09:15:29" ДатаJSONСтрока = ЗаписатьДатуJSON(ТестДата, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.ЛокальнаяДата); // Вариант записи - "ЛокальнаяДатаСоСмещением" // Локальная дата с указание смещения относительно всемирного координированного времени (UTC). // // Преобразует дату в "2023-08-12T09:15:29+03:00" ДатаJSONСтрока = ЗаписатьДатуJSON(ТестДата, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.ЛокальнаяДатаСоСмещением); // Вариант записи - "УниверсальнаяДата // Дата в поясе UTC. // // Преобразует дату в "2023-08-12T09:15:29Z" ДатаJSONСтрока = ЗаписатьДатуJSON(ТестДата, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.УниверсальнаяДата); //////////////////////// // Для формата: JavaScript, Microsoft, - необходимо использовать вариант записи "УниверсальнаяДата"! // Преобразует дату в "new Date(1691820929)" ДатаJSONСтрока = ЗаписатьДатуJSON(ТестДата, ФорматДатыJSON.JavaScript, ВариантЗаписиДатыJSON.УниверсальнаяДата); // Преобразует дату в "/Date(1691820929)/" ДатаJSONСтрока = ЗаписатьДатуJSON(ТестДата, ФорматДатыJSON.Microsoft, ВариантЗаписиДатыJSON.УниверсальнаяДата);КонецПроцедуры // ПреобразованиеДатыВДатуJSON()
// Процедура СтрокаВДату преобразует строку в дату по шаблону форматной строки // // Параметры // Строка - строка, содержащая дату, // ФорматДаты - форматная строка вида: // [dd MM yy] // [yy-MM-dd HH:mm] // [dd MM yy HH mm ss] // [dd MM yyyy] // [MM dd, yyyy, HH:mm] // [dd.MM.yy] // [MM, dd, yyyy] // [yyyyMMdd] // [HH-mm-ss, dd-MM-yy] // [dd] // [dd MM HH:mm:ss yyyy] // [HH:mm:ss] // [HH:mm] // [yyyy-MM-dd HH:mm:ss] // [yyyy-MM-dd] // [yyyy/MM/dd] // [dd/MM/yy] // [MM dd yyyy] // [yyyy-MM] // [yyyy] // [MM, dd, yyyy] // [dd-MM-yyyy] // [ddMMyyyy] // Функция СтрокаВДату(Знач Строка, Знач ФорматДаты) Экспорт Ч = Новый Соответствие; Для ё = 1 По СтрДлина(ФорматДаты) + 6 Цикл Ч[Сред(ФорматДаты + "dMyHms", ё, 1)] = 0 КонецЦикла; Для ё = 1 По СтрДлина(ФорматДаты) Цикл Ч[Сред(ФорматДаты, ё, 1)] = 10 * Ч[Сред(ФорматДаты, ё, 1)] + Найти("123456789", Сред(Строка, ё, 1)); КонецЦикла; Ч["y"] = Ч["y"] + ?(0 < Ч["y"] И Ч["y"] < 50, 2000, ?(0 < Ч["y"] И Ч["y"] < 100, 1900, 0)); Возврат Дата(Макс(Ч["y"], 1), Макс(Ч["M"],1), Макс(Ч["d"],1), Ч["H"], Ч["m"], Ч["s"]); КонецФункции
Источник
// Функция переводит дату в формате 1С в международный текстовый формат вида 'YYYYMMDD hh:mm:ss' // Параметры: Дата1С - Дата - Дата в формате 1С // Возвращаемое значение: Строка - Дата в международном текстовом формате // Функция ДатаВСтроку(Дата1С) Результат = Формат(Год(Дата1С),"ЧГ=0") + ?(СтрДлина(Строка(Месяц(Дата1С))) < 2,"0" + Строка(Месяц(Дата1С)) , Строка(Месяц(Дата1С))) + ?(СтрДлина(Строка(День(Дата1С))) < 2, "0" + Строка(День(Дата1С)), Строка(День(Дата1С))) + " " + ?(СтрДлина(Строка(Час(Дата1С))) < 2, "0" + Строка(Час(Дата1С)), Строка(Час(Дата1С))) + ":" + ?(СтрДлина(Строка(Минута(Дата1С))) < 2, "0" + Строка(Минута(Дата1С)), Строка(Минута(Дата1С))) + ":" + ?(СтрДлина(Строка(Секунда(Дата1С))) <2, "0" + Строка(Секунда(Дата1С)), Строка(Секунда(Дата1С))); Возврат Результат; КонецФункции // Функция переводит строку в дату с указанным форматом // Параметры: // Строка - Строка - Дата в виде строки // ФорматДаты - Строка - Формат даты, в который переводится строка // Возвращаемое значение: Дата - Дата в указанном формате // Функция ПривестиСтрокуКДате(Строка, ФорматДаты="дмг") Список = Новый Массив; Подстрока = ""; Позиция = 1; ДлинаСтроки = СтрДлина(Строка) + 1; Пока Позиция <= ДлинаСтроки цикл Символ = Сред(Строка, Позиция, 1); Если (Символ >= "0") И (Символ <= "9") тогда Подстрока = Подстрока + Символ; ИначеЕсли Подстрока <> "" тогда Список.Добавить(Число(Подстрока)); Подстрока = ""; КонецЕсли; Позиция = Позиция + 1; КонецЦикла; Если Список.Количество() < 3 тогда Возврат Неопределено; КонецЕсли; Если ФорматДаты="дмг" тогда День = Список[0]; Месяц = Список[1]; Год = Список[2]; ИначеЕсли ФорматДаты="мдг" тогда День = Список[1]; Месяц = Список[0]; Год = Список[2]; ИначеЕсли ФорматДаты="гмд" тогда День = Список[2]; Месяц = Список[1]; Год = Список[0]; Иначе День = 1; Месяц = 1; Год = 1; КонецЕсли; Час = 0; Минута = 0; Секунда = 0; Если Список.Количество() >= 5 тогда Час = Список[3]; Минута = Список[4]; Секунда = ?(Список.Количество() >= 6, Список[5], 0); КонецЕсли; Попытка Результат = Дата(Год, Месяц, День, Час, Минута, Секунда); Исключение Возврат Неопределено; КонецПопытки; Возврат Результат; КонецФункции
// Функция описывает период, определяемый датой и периодичностью Функция ПолучитьПериодСтрокой(ДатаВПериоде, Периодичность) Экспорт Если Периодичность = "Год" Тогда ФорматДаты = "ДФ='гггг ""г.""'"; ИначеЕсли Периодичность = "Квартал" Тогда ФорматДаты = "ДФ='к"" квартал"" гггг ""г.""'"; ИначеЕсли Периодичность = "Месяц" Тогда ФорматДаты = "ДФ='ММММ гггг ""г.""'"; ИначеЕсли Периодичность = "Неделя" Тогда ФорматДаты = "ДФ='""Неделя (""дд.ММ.гггг'"; ИначеЕсли Периодичность = "День" Тогда ФорматДаты = "ДФ='дд.ММ.гггг ""г.""'"; Иначе ФорматДаты = ""; КонецЕсли; СтрокаПериод = "" + Формат(ДатаВПериоде, ФорматДаты); Если Периодичность = "Неделя" И ТипЗнч(ДатаВПериоде) = Тип("Дата") Тогда СтрокаПериод = "" + НеделяГода(ДатаВПериоде) + "-ая " + СтрокаПериод + Формат(КонецНедели(ДатаВПериоде), "ДФ='"" - ""дд.ММ.гггг)'"); КонецЕсли; Возврат СтрокаПериод; КонецФункции //Обращение и результат Сообщить(ПолучитьПериодСтрокой(Дата(2009,03,09),"Квартал")); // 1 квартал 2009 г. Сообщить(ПолучитьПериодСтрокой(Дата(2009,03,09),"День")); // 09.03.2009 г..