Конвертация даты из формата ISO8601 в дату 1С с учетом миллисекунд

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

Функция КонвертироватьДатуISO8601ВДату(Дата) Экспорт

	КонвертированнаяДата = Новый Структура("Дата, Миллисекунды");
	
	АвтоконвертированнаяДата = XMLЗначение(Тип("Дата"), Дата);

	Миллисекунды = Сред(Дата, 21);
	Миллисекунды = СокрЛП(СтрЗаменить(Миллисекунды, "Z", ""));

	Если НЕ ПустаяСтрока(Миллисекунды) Тогда
		
		ЧислоМиллисекунд = Число(Миллисекунды);
		
		Если ЧислоМиллисекунд >= 500 Тогда
			
			АвтоконвертированнаяДата = АвтоконвертированнаяДата - 1;
			
		КонецЕсли;
		
	КонецЕсли;
	
	КонвертированнаяДата.Дата = АвтоконвертированнаяДата;
	
	КонвертированнаяДата.Миллисекунды = Миллисекунды;
	
	Возврат КонвертированнаяДата;

КонецФункции 
0
Орфографическая ошибка в АвтоконвертированнаяДата (найдено 4): Автоконвертированная

См. также

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

Формат даты в СКД

УстановитьФорматДаты (БСП)

Строка в дату по форматной строке

Получить дату из строки формата YYYY-MM-DDThh:mm:ss ISO 8601

ДействующиеДатыЗапрета (БСП)

ПредставлениеЛокальнойДатыСоСмещением (БСП)

ОбновитьФайл (БСП)

Модератору