Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

СТРОКУ (две цифры года) в ДАТУ, как?

СТРОКУ (две цифры года) в ДАТУ, как?
Я
   dft2014
 
06.12.17 - 16:33
Как преобразовать СТРОКУ вида 27.10.92 в ДАТУ 27.10.1992?

Пробовала функцией ниже, но выдает ошибку.

СтрокуВДату = РазобратьДату(Данные.ДатаРождения);   
ФизЛицо.ДатаРождения = Формат(СтрокуВДату, "ДФ=dd.MM.yyyy"); 

Функция РазобратьДату(ИзмДата);
    Возврат Дата(Сред(ИзмДата,7,4)+Сред(ИзмДата,4,2)+Сред(ИзмДата,0,2));
КонецФункции
 
 
   lodger
 
1 - 06.12.17 - 16:35
попробуй просто Дата(Данные.ДатаРождения).
   Lexey_
 
2 - 06.12.17 - 16:39
(0) это та самая легендарная единственная ошибка 1С?
   echo77
 
3 - 06.12.17 - 16:40
(0)  Возврат Дата(Сред(ИзмДата,7,4)+Сред(ИзмДата,4,2)+Сред(ИзмДата,1,2));
   1Садовник
 
4 - 06.12.17 - 16:49
СтрокуВДату = "921027".  Ты же год полностью не получаешь. Сред(ИзмДата,7,4) вернет ток "92".
   Umga2002
 
5 - 06.12.17 - 16:59
Похоже без анализа года не обойтись....
   Umga2002
 
6 - 06.12.17 - 17:01
Ошибка МИЛЕНИУМ похоже....
   drcrasher
 
7 - 06.12.17 - 17:04
(0) подозреваю, что там даты рождения записаны в строке. если год больше 17, то добавлять 19, если меньше или равен - 20
   dft2014
 
8 - 06.12.17 - 17:45
Ап!
   azernot
 
9 - 06.12.17 - 17:52
Функция РазобратьДату(ИзмДата);
 Год = Сред(ИзмДата,7,4)
 Если СтрДлина(Год)<4 Тогда
  ГодЧислом = Число(Год);
  ГодНачалаСтолетия = 20;
  Если ГодЧислом > ГодНачалаСтолетия Тогда
    Год  = "19"+Год;
  Иначе
    Год  = "20"+Год;
  КонецЕсли;
 КонецЕсли;

 Возврат Дата(Год+Сред(ИзмДата,4,2)+Сред(ИзмДата,0,2));
КонецФункции
   dft2014
 
10 - 06.12.17 - 17:58
(9) СПАСИБО!!! Все получилось!!!
 
 Рекламное место пустует
   Serg_1960
 
11 - 06.12.17 - 18:04
(10) Цирк-шапито да и только :)
"Как преобразовать СТРОКУ вида 27.10.92" - там не строка, там всё-таки дата. Если учитывать (9) и "все получилось"(цы)
   azernot
 
12 - 06.12.17 - 18:06
(11) Эээ... что не так? Из строки "27.10.92" получили дату 27.10.1992
   Serg_1960
 
13 - 06.12.17 - 22:25
Упс, конец напряженного рабочего дня :) "Прошу понять и простить"(с)
   Serg_1960
 
14 - 06.12.17 - 23:16
В качестве компенсации - функция, которая по мнению автора любую экзотику пережуёт, проглотит и выплюнет как дату - лишь бы там только цифры были :)

Функция ПроизвольнаяСтрокаДатыДвеЦифрыГода(Знач СтрДата)
 
    СтрДата = СтрЗаменить(СтрДата, ".", Символы.ПС);
    СтрДата = СтрЗаменить(СтрДата, "/", Символы.ПС);
    СтрДата = СтрЗаменить(СтрДата, "-", Символы.ПС);
    Год = Число(СтрПолучитьСтроку(СтрДата,3));
    Возврат Дата( ?(Год<100, 2000, 0) + Год, Число(СтрПолучитьСтроку(СтрДата,2)), Число(СтрПолучитьСтроку(СтрДата,1)));

КонецФункции


PS: даты с двумя цифрами года преобразуются в дату прошлого века ;)
   Serg_1960
 
15 - 06.12.17 - 23:18
PSS: в алгоритме, как всегда, киндер-сюрприз для непосвящённых :))
   Лефмихалыч
 
16 - 06.12.17 - 23:27
Если Строка = "27.10.92" Тогда
   Возврат Дата(1992, 10, 27);
КонецЕсли;

Это же элементарно!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует