|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Используется макрос, который извлекает данные из перечня документов, содержащий и интервалы дат Раньше они были вида "28.01.2015 - 28.01.2016", использовался код Код: vbnet 1. 2. 3.
Потом пошли типа "с 03.05.2018 по 03.05.2019", поправили на Код: vbnet 1. 2. 3.
Но интересует, возможно ли универсально извлекать из строки даты (дд.мм.гггг)? Нужен общий вариант, т.к. в дальнейшем документы могут поступать вперемешку и например, добавится что-то типа "29.09.2018 по 29.09.2019" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 16:48 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
ну самый универсальный способ - искать с помощью регулярных выражений ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 17:06 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.Proну самый универсальный способ - искать с помощью регулярных выражений Еще более универсальный при помощи ИИ. Первое будет тормозить на больших объемах, второе требует инвестиций. На данный момент должно помочь брать первые 10 и последние 10 символов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 18:44 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Специально городить код не требуется, хотя бы общее решение для первых двух примеров. --- По regex - вроде нашлось похожее , как подправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 19:53 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
iMrTidy брать первые 10 и последние 10 символов.LeCrunchпошли типа "с 03.05.2018 по 03.05.2019" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 20:04 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
LeCrunchПо regex - вроде нашлось похожее , как подправить?что-то типа \d{2}\.\d{2}\.\d{4} ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 20:09 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
iMrTidyбрать первые 10 и последние 10 символов.Отличное решение! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 20:22 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
КазанскийiMrTidyбрать первые 10 и последние 10 символов.Отличное решение!еще раз LeCrunch"с 03.05.2018 по 03.05.2019" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 20:36 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.Pro, это ты придумал, в ТЗ этого не было. А если формат даты гулять будет будет, "29 августа 2019 г."? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 20:46 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
КазанскийShocker.Pro, это ты придумал, в ТЗ этого не былоЧего я придумал, если я цитирую ТС? Я бы сам предложил Left(10), если бы не фигурировал этот вариант. КазанскийА если формат даты гулять будет будет, "29 августа 2019 г."?Алексей, тебя сегодня подменили что ли? LeCrunchизвлекать из строки даты (дд.мм.гггг)? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2018, 20:57 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.ProiMrTidy брать первые 10 и последние 10 символов.LeCrunchпошли типа "с 03.05.2018 по 03.05.2019" Тогда нужно предусмотреть все возможные случаи сразу, на разных языках и с ошибками. Я написал русским языком, что на данный момент первые/последние 10 будет работать. А проблемы я привык решать по мере их поступления. Когда будет прочий мусор, тогда и будет думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 21:24 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
iMrTidyна данный момент первые/последние 10 будет работатьДа блин, первые 10 выглядят так с 03.05.20не будет работать iMrTidyТогда нужно предусмотреть все возможные случаи сразу, на разных языках и с ошибками.Автор в явном виде задал формат: LeCrunchдаты (дд.мм.гггг)не надо сочинять за него ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 05:18 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.ProАвтор в явном виде задал формат: LeCrunchдаты (дд.мм.гггг)не надо сочинять за негоавтор почему-то решил, что круг будет сплющен (или растянут) только по горизонтали а вертикали и диагонали ему еще не встречались, и потому о них он подумает позже ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 07:39 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Корректный разбор интервала дат заданный в произвольном случайном формате - задача настолько нетривиальная и сложная, что лучше озаботиться как можно большим количеством ограничений на входные данные, и если они есть - это хорошо. Мы не знаем бизнес-логики ТС ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 08:10 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.ProiMrTidyна данный момент первые/последние 10 будет работатьДа блин, первые 10 выглядят так с 03.05.20не будет работать Я не увидел, чтобы у автора было "с". Собственно, было бы здорово услышать непосредственно от ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 18:54 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
И даже если там пойдет вперемешку, то split в помощь, и проверку первый символ. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 18:55 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Да, сейчас, в основном, идут записи с буквой с , типа "с 03.05.2018 по 03.05.2019" Вообще, подобные записи фигурируют в видимом штампе ЭЦП (для наглядности к полноценной отсоединенной ЭП) и наглядно обозначают срок её действия. Но как в будущем будет меняться такая строка (может, добавят г. или вместо до - по ) - х.з. Известно лишь, что в ней обязательно будут две даты (в формате ДД.ММ.ГГГГ) и их нужно последовательно вылавливать. Может, как-то ISDATE для такой проверки приспособить? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 19:45 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
iMrTidyЯ не увидел, чтобы у автора было "с". Собственно, было бы здорово услышать непосредственно от ТС.ты меня пугаешь. Мало того, что это было в первом же посте, я это еще и специально процитировал. А ты опять хочешь что-то услышать от ТС. LeCrunchИзвестно лишь, что в ней обязательно будут две даты (в формате ДД.ММ.ГГГГ) и их нужно последовательно вылавливать. Может, как-то ISDATE для такой проверки приспособить?Вы же нашли вполне подходящий пример обработки через регулярное выражение. И IsDate там как раз фигурирует для окончательной проверки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 19:52 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
найти instr'ом первую и третью точку. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 11:12 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.Pro, Хорошо, не внимательно посмотрел. Тогда полагаю split будет быстрее и проще. У кого есть желание протестировать?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 20:04 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
сплит будет быстрее, не спорю. Поиск точек - тоже, просто муторнее Но что делать со сплитом в случае 28.01.2015-28.01.201628.01.2015/28.01.2016добавлять все время новые сплиты? По моему, проще сделать один раз регулярку и забыть. К тому же уметь пользоваться регулярками полезно, привыкаешь, потом за уши не оттянешь, когда одной строкой ты можешь заменить простыню циклов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 05:07 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
С регулярными выражениями - круто конечно, но высокий порог вхождения Нашелся еще вариант с массивом разделителей: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1116134&msg=16587329 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 07:08 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
LeCrunchС регулярными выражениями - круто конечно, но высокий порог вхожденияЗубов бояться - в рот не даватьВолков бояться - в лес не ходить ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 07:23 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Shocker.Proсплит будет быстрее, не спорю. Поиск точек - тоже, просто муторнее Но что делать со сплитом в случае 28.01.2015-28.01.201628.01.2015/28.01.2016добавлять все время новые сплиты? По моему, проще сделать один раз регулярку и забыть. К тому же уметь пользоваться регулярками полезно, привыкаешь, потом за уши не оттянешь, когда одной строкой ты можешь заменить простыню циклов.ээээээ 28.01.2015/28.01.2016 28/01/2015-28/01/2016 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 08:28 |
|
Универсальное определение дат
|
|||
---|---|---|---|
#18+
Хватит сочинять. Я уже неоднократно ответил Shocker.ProАвтор в явном виде задал формат: LeCrunchдаты (дд.мм.гггг)не надо сочинять за негоShocker.ProКорректный разбор интервала дат заданный в произвольном случайном формате - задача настолько нетривиальная и сложная, что лучше озаботиться как можно большим количеством ограничений на входные данные, и если они есть - это хорошо.LeCrunchИзвестно лишь, что в ней обязательно будут две даты (в формате ДД.ММ.ГГГГ)о чем и зачем ты споришь? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 08:37 |
|
|
start [/forum/topic.php?fid=61&msg=39710728&tid=2172233]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 427ms |
0 / 0 |