Имя: Пароль:
1C
1С v8
Как конвертировать в дату?
0 delusl
 
27.03.12
21:11
Гуру, подскажите пожалуйста как проще всего конвертировать строку
"21-12-2011" в значение типа Дата?
Должно же быть простое решение этой задачи. Проблема же не редкая.
1 Нуф-Нуф
 
27.03.12
21:12
распарсь ее
2 дущ
 
27.03.12
21:19
(0) нет простого решения, а есть три метода Лев, Прав и Сред.
3 Serg_1960
 
27.03.12
21:20
Попробуй: Дата("21-12-2011" + " 0:00:00")
Если не получится СтрЗаменить() "-" на "."
4 andrewks
 
27.03.12
21:21
(2) слишком много. всё можно сделать через Сред()
5 andrewks
 
27.03.12
21:22
(3) какая наивность
6 andrewks
 
27.03.12
21:23
(3) пардон, поправка с точками, наверное, может и помочь
7 дущ
 
27.03.12
21:24
(4) это я для красного словца
(5) нет, почему-же, может получиться.
8 andrewks
 
27.03.12
21:26
да, с точками схавал
9 andrewks
 
27.03.12
21:27
но, в общем случае, всё равно придётся парсить. ибо нет гарантии, что вместо 2012 не придёт 12
10 delusl
 
27.03.12
21:31
(3) ура с точками вроде получается
ходя странно по описано поописанию формат вроде не тот.


а то как-то неприлично писать
  позициятире = найти(докдата,"-")  ;
  день  = лев(докдата,позициятире-1);
  докдата1 = сред(докдата,позициятире+1);
  позициятире = найти(докдата1,"-")  ;
  месяц  = лев(докдата1,позициятире-1);
  год = сред(докдата1,позициятире+1);
  уx =  дата(год,месяц,день);
11 hhhh
 
27.03.12
21:34
что же тут неприличного?
12 дущ
 
27.03.12
21:48
(10) ну напиши так

ух = Дата(Прав(ДокДата, 4), Сред(ДокДата, 4, 2), Лев(ДокДата, 2));

легче будет? Это если конечно формат даты фиксированный, и вместо 2012 - 12 не придет.
13 Serg_1960
 
27.03.12
21:50
Тьфу на вас - вы совсем уж без фантазии :)

ДобавитьМесяц(Дата(СтрЗаменить(ДокДата,"-",".") + " 0:00:00"),?(СтрДлина(ДокДата)=10,0,24000))
14 delusl
 
27.03.12
21:54
(12)
вместо 2012 - 12 не придет а день или месяц вместо 01 - 1 прити  может
15 andrewks
 
27.03.12
21:55
(14) это не страшно
16 Serg_1960
 
27.03.12
21:58
(чисто прикола ради)


ДатаСтрокой = "1-2-12";
Сообщить(ДобавитьМесяц(Дата(СтрЗаменить(ДатаСтрокой,"-",".") + " 0:00:00"),?(СтрДлина(ДатаСтрокой)=10,0,24000))); // "01.02.2012 0:00:00"
17 Deon
 
27.03.12
22:01
Вроде бы + " 0:0:0" тоже работало
18 дущ
 
27.03.12
22:01
(13) хыхы, это мощно
(14)

ДокДата = Прав("0" + ДокДата, 10);
ух = Дата(Прав(ДокДата, 4), Сред(ДокДата, 4, 2), Лев(ДокДата, 2));
19 Serg_1960
 
27.03.12
22:04
(16) +
И даже строку "33-13-12" проглотит :) Но дата будет "02.02.2013 0:00:00"... что тоже верно... ммм... теоретически :))
20 delusl
 
27.03.12
22:16
(16) да круто, (19) а
ДатаСтрокой = "1-2-2012";
проглотит?
21 Serg_1960
 
27.03.12
23:50
(20) Да, разумеется
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.