открытие файла с форматированной датой и получение этой даты для сравнения - PullRequest
0 голосов
/ 28 марта 2012

Я программирую на С ++, у меня есть требование, чтобы получить только дату, остальные компоненты не нужны,

У меня есть содержимое в моем файле следующим образом: -

2012-03-26T15:05:24.844Z - DEBUG:   Logging_Test:test3 : Testing file logger

2012-03-26T15:05:24.844Z -> эта часть возвращается из функции GetDateTime(), которая имеет поток строк sDateStream и возвращается к функции GetDateTime() строка

Моя цель - просто получить дату из этой части и сравнить ее с системной датой и системной датой, которую я использую: -

void FileLogger::date()
{

SYSTEMTIME time;//variable time to get the system time
GetLocalTime(&time);//reference to the timek
int hour = time.wHour;
if (hour > 12) hour -= 12;
int year = time.wYear;
int month = time.wMonth;
int day = time.wDay;
//not returning anything just storing values of day ,month
//& year

}

теперь мне нужно сделать сравнение ч / б двух дат, и если дата в .txt меньше сегодняшней даты, создается новый файл

, пожалуйста, помогите, ребята, я знаю, что для мастеров это очень просто, но для начинающего, как я, это создает проблемы, пожалуйста, предоставьте помощь в виде некоторого кода, чтобы я мог его понять

1 Ответ

0 голосов
/ 28 марта 2012

Если у вас есть строка в виде строки, и вы уверены в формате, простейшим решением будет:

std::string dateString(
    line.begin(), std::find( line.begin(), line.end(), 'T' ) );

(я бы все-таки сделал дополнительную проверку; например, что dateString точно Длиной 10 символов, которая содержит только цифры или '-' и т. Д.)

Это формат даты ISO; он был специально разработан для поддержки Сравнение непосредственно в виде строки, поэтому вы можете рассмотреть возможность получения системная дата также в виде строки в формате ISO. (Это очень легко если вы используете стандартные функции time, localtime и strftime.)

...