У меня есть строка 26.07.2010 18:37:12, и я хочу преобразовать ее в формат даты так, чтобы я мог сравнить ее с другими строками и проверить, является ли дата (26.07.2010 18:37:12) ранее или нет.
Кто-либо мог предложить способ преобразовать эту строку до настоящего времени?
Прелесть нотации ISO 8601, которую вы показываете, заключается в том, что сравнение строк между двумя датами сообщает вам относительный порядок. Поскольку все даты, которые вам нужно сравнить, относятся к AD (или CE), а не к BC (или BCE) и выражены в одном часовом поясе, это тривиально:
2010-07-26 18:37:12 > 2001-10-31 15:36:21
2010-07-26 18:37:12 < 2010-12-25 00:00:00
Если вам нужно иметь дело с другими форматами даты, тогда strptime ()
- ваш друг.
У меня есть программа (образно названная strptime ), которая выполнит эту работу (см. Мой профиль, чтобы связаться со мной); для этого, вероятно, есть другие инструменты. Однако даже strptime ()
имеет некоторые проблемы с часовыми поясами, особенно с именованными часовыми поясами, а не с чисто числовыми смещениями.
Функция strptime - это то, что вам нужно
man strptime
Для вашего примера
struct tm stm;
strptime(string, "%Y-%m-%d %H:%M:%s", &stm);