Преобразование строки в дату для UNIX? - PullRequest
1 голос
/ 27 июля 2010

У меня есть строка 2010-07-26 18:37:12 и я хочу преобразовать ее в формат даты, чтобы я мог сравнить ее с другими строками и проверить, является ли дата (2010-07-26 18:37:12) раньше или нет.

Может кто-нибудь предложить способ преобразования этой строки в дату?

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Функция strptime - это то, что вы хотите

man strptime

Для вашего примера

struct tm stm;
strptime(string, "%Y-%m-%d %H:%M:%s", &stm);
0 голосов
/ 27 июля 2010

Красота нотации 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() имеет некоторые проблемы с часовыми поясами, особенно с именованными часовыми поясами, а не с чисто числовыми смещениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...