Имя: Пароль:
1C
1С v8
Функция преобразования даты
0 33554432
 
19.04.17
16:36
Как преобразовать строку "2017-04-13" в дату?
1 Волшебник
 
модератор
19.04.17
16:37
ДАта("20170413")
2 mehfk
 
19.04.17
16:50
Дата('2017-04-13')
3 azernot
 
19.04.17
17:31
// Получение значения типа "Дата" из строки по формату шаблона
//
// Параметры
//  <Строка>  – <Строка> – строка содержащая значения литералов даты
//                (Например "03.07.1979 09:30:59")
//  <Шаблон>  – <Строка> – Строка содержащая шаблон даты
//                (Например "ДД.ММ.ГГГГ ЧЧ:ММ:СС")
//  <Режим>   - <Строка> –режим возвращаемого значения:
//                    
// Возвращаемое значение:
//   <Дата>   – в случае Режим = "Дата"
//   <Строка> - в случае Режим = "Строка" (формат строки: ГГГГММДДччммсс)
Функция ИзСтрокиВДату(Строка, Шаблон = "ДД.ММ.ГГГГ", Режим = "Дата") Экспорт
    
    Если НЕ ЗначениеЗаполнено(Строка) ТОгда
        Возврат Дата("00010101");
    КонецЕсли;
    Попытка
    //Получим строковые значения литералов
    Год = Сред(Строка, Найти(Шаблон, "ГГГГ"),4);
    Если Число(СокрЛП(Год)) <30 Тогда
        Год = "20"+Строка(Формат(Число(СокрЛП(Год)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
    ИначеЕсли Число(СокрЛП(Год)) <100 Тогда
        Год = "19"+Строка(Формат(Число(СокрЛП(Год)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
    КонецЕсли;    
        
    Месяц = Сред(Строка, Найти(Шаблон, "ММ"),2);
    День = Сред(Строка, Найти(Шаблон, "ДД"),2);
    ЕстьЧасы = Найти(Шаблон,"чч");
    
    Если ЕстьЧасы>0 Тогда
        Час = Сред(Строка,ЕстьЧасы,2);
    Иначе
        Час = "0";
    КонецЕсли;
    
    ЕстьМинуты = Найти(Шаблон,"мм");
    Если ЕстьМинуты>0 Тогда
        Минута = Сред(Строка,ЕстьМинуты,2);
    Иначе
        Минута = "0";
    КонецЕсли;
    
    ЕстьСекунды = Найти(Шаблон,"сс");
    Если ЕстьСекунды>0 Тогда
        Секунда = Сред(Строка,ЕстьСекунды,2);
    Иначе
        Секунда = "0";
    КонецЕсли;
    
    Год = Строка(Формат(Число(СокрЛП(Год)), "ЧЦ=4; ЧН=2000; ЧВН=; ЧГ="));
    Месяц = Строка(Формат(Число(СокрЛП(Месяц)), "ЧЦ=2; ЧН=01; ЧВН=; ЧГ="));
    День = Строка(Формат(Число(СокрЛП(День)), "ЧЦ=2; ЧН=01; ЧВН=; ЧГ="));
    Час = Строка(Формат(Число(СокрЛП(Час)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
    Минута = Строка(Формат(Число(СокрЛП(Минута)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
    Секунда = Строка(Формат(Число(СокрЛП(Секунда)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
    Если Режим = "Дата" Тогда
        Возврат Дата(Год+Месяц+День+Час+Минута+Секунда);
    ИначеЕсли Режим = "Строка" Тогда
        Возврат Год+Месяц+День+Час+Минута+Секунда;
    Иначе
        Стр = Режим;
        Стр = СтрЗаменить(Стр,"ГГГГ",Год);
        Стр = СтрЗаменить(Стр,"ММ",Месяц);
        Стр = СтрЗаменить(Стр,"ДД",День);
        Стр = СтрЗаменить(Стр,"чч",Час);
        Стр = СтрЗаменить(Стр,"мм",Минута);
        Стр = СтрЗаменить(Стр,"сс",Секунда);
        Возврат Стр;
    КонецЕсли;    
Исключение
    Возврат Дата("00010101");
    КонецПопытки;
КонецФункции // ИзСтрокиВДату()
4 youalex
 
19.04.17
17:35
XMLЗначение(Тип("Дата"), "2017-04-13")