Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Универсальное определение дат / 25 сообщений из 27, страница 1 из 2
29.09.2018, 16:48
    #39710326
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Используется макрос, который извлекает данные из перечня документов, содержащий и интервалы дат
Раньше они были вида "28.01.2015 - 28.01.2016", использовался код
Код: vbnet
1.
2.
3.
sCheck = Split(signActual, "-")
sOt = CDate(signCheck(0))
sDo = CDate(signCheck(1))


Потом пошли типа "с 03.05.2018 по 03.05.2019", поправили на
Код: vbnet
1.
2.
3.
sCheck = Split(signActual, " ")
sOt = CDate(signCheck(1))
sDo = CDate(signCheck(3))


Но интересует, возможно ли универсально извлекать из строки даты (дд.мм.гггг)?
Нужен общий вариант, т.к. в дальнейшем документы могут поступать вперемешку и например, добавится что-то типа "29.09.2018 по 29.09.2019"
...
Рейтинг: 0 / 0
29.09.2018, 17:06
    #39710329
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
ну самый универсальный способ - искать с помощью регулярных выражений
...
Рейтинг: 0 / 0
29.09.2018, 18:44
    #39710352
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Shocker.Proну самый универсальный способ - искать с помощью регулярных выражений

Еще более универсальный при помощи ИИ. Первое будет тормозить на больших объемах, второе требует инвестиций. На данный момент должно помочь брать первые 10 и последние 10 символов.
...
Рейтинг: 0 / 0
29.09.2018, 19:53
    #39710367
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Специально городить код не требуется, хотя бы общее решение для первых двух примеров.
---
По regex - вроде нашлось похожее , как подправить?
...
Рейтинг: 0 / 0
29.09.2018, 20:04
    #39710368
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
iMrTidy брать первые 10 и последние 10 символов.LeCrunchпошли типа "с 03.05.2018 по 03.05.2019"
...
Рейтинг: 0 / 0
29.09.2018, 20:09
    #39710370
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
LeCrunchПо regex - вроде нашлось похожее , как подправить?что-то типа
\d{2}\.\d{2}\.\d{4}
...
Рейтинг: 0 / 0
29.09.2018, 20:22
    #39710372
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
iMrTidyбрать первые 10 и последние 10 символов.Отличное решение!
...
Рейтинг: 0 / 0
29.09.2018, 20:36
    #39710375
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
КазанскийiMrTidyбрать первые 10 и последние 10 символов.Отличное решение!еще раз
LeCrunch"с 03.05.2018 по 03.05.2019"
...
Рейтинг: 0 / 0
29.09.2018, 20:46
    #39710377
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Shocker.Pro,
это ты придумал, в ТЗ этого не было. А если формат даты гулять будет будет, "29 августа 2019 г."?
...
Рейтинг: 0 / 0
29.09.2018, 20:57
    #39710380
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
КазанскийShocker.Pro,
это ты придумал, в ТЗ этого не былоЧего я придумал, если я цитирую ТС?
Я бы сам предложил Left(10), если бы не фигурировал этот вариант.

КазанскийА если формат даты гулять будет будет, "29 августа 2019 г."?Алексей, тебя сегодня подменили что ли?
LeCrunchизвлекать из строки даты (дд.мм.гггг)?
...
Рейтинг: 0 / 0
30.09.2018, 21:24
    #39710655
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Shocker.ProiMrTidy брать первые 10 и последние 10 символов.LeCrunchпошли типа "с 03.05.2018 по 03.05.2019"

Тогда нужно предусмотреть все возможные случаи сразу, на разных языках и с ошибками. Я написал русским языком, что на данный момент первые/последние 10 будет работать. А проблемы я привык решать по мере их поступления. Когда будет прочий мусор, тогда и будет думать.
...
Рейтинг: 0 / 0
01.10.2018, 05:18
    #39710710
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
iMrTidyна данный момент первые/последние 10 будет работатьДа блин, первые 10 выглядят так
с 03.05.20не будет работать
iMrTidyТогда нужно предусмотреть все возможные случаи сразу, на разных языках и с ошибками.Автор в явном виде задал формат:
LeCrunchдаты (дд.мм.гггг)не надо сочинять за него
...
Рейтинг: 0 / 0
01.10.2018, 07:39
    #39710728
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Shocker.ProАвтор в явном виде задал формат:
LeCrunchдаты (дд.мм.гггг)не надо сочинять за негоавтор почему-то решил, что круг будет сплющен (или растянут) только по горизонтали
а вертикали и диагонали ему еще не встречались, и потому о них он подумает позже
...
Рейтинг: 0 / 0
01.10.2018, 08:10
    #39710733
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Корректный разбор интервала дат заданный в произвольном случайном формате - задача настолько нетривиальная и сложная, что лучше озаботиться как можно большим количеством ограничений на входные данные, и если они есть - это хорошо.
Мы не знаем бизнес-логики ТС
...
Рейтинг: 0 / 0
01.10.2018, 18:54
    #39711202
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Shocker.ProiMrTidyна данный момент первые/последние 10 будет работатьДа блин, первые 10 выглядят так
с 03.05.20не будет работать
Я не увидел, чтобы у автора было "с". Собственно, было бы здорово услышать непосредственно от ТС.
...
Рейтинг: 0 / 0
01.10.2018, 18:55
    #39711203
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
И даже если там пойдет вперемешку, то split в помощь, и проверку первый символ.
...
Рейтинг: 0 / 0
01.10.2018, 19:45
    #39711228
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Да, сейчас, в основном, идут записи с буквой с , типа "с 03.05.2018 по 03.05.2019"
Вообще, подобные записи фигурируют в видимом штампе ЭЦП (для наглядности к полноценной отсоединенной ЭП) и наглядно обозначают срок её действия. Но как в будущем будет меняться такая строка (может, добавят г. или вместо до - по ) - х.з. Известно лишь, что в ней обязательно будут две даты (в формате ДД.ММ.ГГГГ) и их нужно последовательно вылавливать.
Может, как-то ISDATE для такой проверки приспособить?
...
Рейтинг: 0 / 0
01.10.2018, 19:52
    #39711231
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
iMrTidyЯ не увидел, чтобы у автора было "с". Собственно, было бы здорово услышать непосредственно от ТС.ты меня пугаешь. Мало того, что это было в первом же посте, я это еще и специально процитировал. А ты опять хочешь что-то услышать от ТС.


LeCrunchИзвестно лишь, что в ней обязательно будут две даты (в формате ДД.ММ.ГГГГ) и их нужно последовательно вылавливать.
Может, как-то ISDATE для такой проверки приспособить?Вы же нашли вполне подходящий пример обработки через регулярное выражение. И IsDate там как раз фигурирует для окончательной проверки.
...
Рейтинг: 0 / 0
02.10.2018, 11:12
    #39711517
zchvv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
найти instr'ом первую и третью точку.
...
Рейтинг: 0 / 0
02.10.2018, 20:04
    #39712031
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Shocker.Pro,

Хорошо, не внимательно посмотрел. Тогда полагаю split будет быстрее и проще. У кого есть желание протестировать?))
...
Рейтинг: 0 / 0
03.10.2018, 05:07
    #39712180
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
сплит будет быстрее, не спорю. Поиск точек - тоже, просто муторнее
Но что делать со сплитом в случае
28.01.2015-28.01.201628.01.2015/28.01.2016добавлять все время новые сплиты?
По моему, проще сделать один раз регулярку и забыть.

К тому же уметь пользоваться регулярками полезно, привыкаешь, потом за уши не оттянешь, когда одной строкой ты можешь заменить простыню циклов.
...
Рейтинг: 0 / 0
03.10.2018, 07:08
    #39712194
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
С регулярными выражениями - круто конечно, но высокий порог вхождения
Нашелся еще вариант с массивом разделителей: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1116134&msg=16587329
...
Рейтинг: 0 / 0
03.10.2018, 07:23
    #39712196
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
LeCrunchС регулярными выражениями - круто конечно, но высокий порог вхожденияЗубов бояться - в рот не даватьВолков бояться - в лес не ходить
...
Рейтинг: 0 / 0
03.10.2018, 08:28
    #39712210
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
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
...
Рейтинг: 0 / 0
03.10.2018, 08:37
    #39712213
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальное определение дат
Хватит сочинять.
Я уже неоднократно ответил

Shocker.ProАвтор в явном виде задал формат:
LeCrunchдаты (дд.мм.гггг)не надо сочинять за негоShocker.ProКорректный разбор интервала дат заданный в произвольном случайном формате - задача настолько нетривиальная и сложная, что лучше озаботиться как можно большим количеством ограничений на входные данные, и если они есть - это хорошо.LeCrunchИзвестно лишь, что в ней обязательно будут две даты (в формате ДД.ММ.ГГГГ)о чем и зачем ты споришь?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Универсальное определение дат / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]