|
Разобрать строку в дату
|
Я
|
|
DTX 4th 08.09.16 - 16:53 | Может есть у кого пример функции с RegExp, которой можно быстренько разобрать строку вида
P2016Y9M5DT3H12M41S
в дату?
Причем компонента времени может быть не указана, что будет означать 0. |
aleks_default 1 - 08.09.16 - 17:08 | ( 0)В школе тоже только списывал небось... В работе так не получится. |
DTX 4th 2 - 08.09.16 - 17:15 | ( 1) Списывал, ещё больше давал списывать.
А ты уже в школе был таким жлобом? Или работа так изменила? |
Lexey_ 3 - 08.09.16 - 17:20 | ( 0) зачем тебе RegExp? СтрЗаменить + Вычислить |
Vladal 4 - 08.09.16 - 17:25 | P2016Y9M5DT3H12M41S
|P
|2016Y --- 2016 год
|9M --- сентябрь
|5D --- 5 число
|T
|3H --- 3 часа
|12M --- 12 минут
|41S --- 41 секунда
Литералы не повторяются, их можно считать разделителями.
Ведущих нолей нет, значит нет жесткой позиции.
ПОзицияГода = СтрНайти(СтрокаДаты, "Y");
Год = Сред(СтрокаДаты, (ПозицияГода - 4), 4);
и т.д. |
Vladal 5 - 08.09.16 - 17:27 | (3) А со СтрЗаменить вообще песня!
СтрЗаменить(СтрокаДаты, "Y", "-");
...
СтрЗаменить(СтрокаДаты, "h", ":");
-------------------
А хотя нет, литерал М посторяется как Месяц и как Минута. |
Lexey_ 6 - 08.09.16 - 17:29 | (5) да вот
ДатаСтрокой = "P2016Y9M5DT3H12M41S";
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "P", "");
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "Y", ",");
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "M", ",");
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "DT", ",");
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "H", ",");
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "M", ",");
ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "S", "");
Дата = Вычислить("Дата(" + ДатаСтрокой + ")");
(0) ТС, 500рэ с тебя |
Lexey_ 7 - 08.09.16 - 17:30 | (6) одна строчку ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "M", ",");
можно убрать |
aleks_default 8 - 08.09.16 - 17:32 | Да работа повлияла. Стал лучше относится к людям, которые действительно пытаются что-то сделать, и хуже к тем, которые ленятся. Потому что у первых в конце концов что-то получается и они растут в профессиональном плане, а вторые так и остаются халявщиками.
|
Vladal 9 - 08.09.16 - 17:36 | |
DTX 4th 10 - 08.09.16 - 17:42 | ( 3) Да, про дату строкой не подумал.. Спасибо!
Думал с регекспом выбрать что-то типа
\P(d*)Y(d*)M(d*)DT(d*)H(d*)M(d*)S\
А потом через Дата()
Но с группами регулярок в 1С ещё не работал.
( 8) Одно дело просить готовую настройку для компоновщика какого-нибудь, а другое - простенькую функцию. И просил скорее не из-за лени, а из-за того, что до вечера надо закончить. |
Serginio1 11 - 08.09.16 - 17:49 | |
Метранпаж 12 - 08.09.16 - 17:55 | ( 11) Скажите, гражданский... А мух вы тоже из 2С4 бьёте? |
SleepyHead 13 - 08.09.16 - 18:07 | ( 2) Хамите, парниша. Неудачное начало. |
Serginio1 14 - 08.09.16 - 18:08 | ( 12) У меня многофункциональный аппарат. Он и по танкам и по мухам одинаково стреляет. Кстати те же регексы там есть, и чего только нет. |
DTX 4th 15 - 08.09.16 - 18:52 | ( 13) Начало чего?
Вообще да. Торопился и не придумал, как помягче написать.
( 1) Если задел - прошу прощения |