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