![]() |
TDateTime - Операции с временем [вычитание, сложение]
Приветствую всех. :)
Друзья, понадобилась ваша помощь, самостоятельно решить не могу, вернее, только частично. Пишу парсер логов AVZ. В программу добавил функцию поиска файлов, созданых в определённый промежуток времени - 30 дней с момента создания лога AVZ. В логе AVZ эта строка означает дату сканирования Код:
LogDate="7/17/2010 10:33:29 PM" Код:
DataScan = "7/17/2010 10:33:29 PM" Переменная AnsiString str хранит передаваемую дату создания файла. Задача: Как правильно вычесть одну дату из другой? Код:
DataScan - str Код:
7/17/2010 10:33:29 PM - Месяц/День/Год - M/D/YYYY С последним форматом проблем нет, также можно заменить разделитель /, - на точку. Друг помог с форматом 19.Jul.2010 19:14:48 Функция SearchCreateToNMounth принимает два аргумента: 1-й дату, 2-й полное имя файла. Ошибку выдаёт такую ![]() Про операции проводимые с временем читал здесь и здесь Что я не так делаю? Если не трудно, подскажите как можно это сделать правильно? Спасибо. |
Можно сделать угадывалку (по типу угадывалки кодировки в Total Commander) примерно так:
Код:
#include <vector> 1) создали GuessDateFormat guess_format; 2) скидали в него все даты, какие есть for(...) guess_format.add_sample(date[n].c_str()); 3) проверили, угадался ли формат if (guess_format.state()==GuessDateFormat::state_ready) 4) переводим даты time_t t1; for(...) guess_format.convert(date[n].c_str(), t1); чего в коде нет: 1) таблицы соответсвия месяц-номер месяца (на всех языках, со всеми сокращениями) 2) не может отличить минуты от секунд. Чтобы это обойти, надо внутри добавить код: пробежаться по вектору с подозрениями и если встретится элемент времени, то последовательно обозначить час, минута, секунда. |
Вложений: 1
pva, Код конечно шикарный, осталось в нём разобраться. :gigi: Можешь его внедрить в простой пример? :)
|
вот, правда сделано на билдере 4 (у билдера 6 есть проблема с линковкой имён с подчёркиваниями)
|
Время: 14:15. |
Время: 14:15.
© OSzone.net 2001-