Преобразовать "% y-% m-% d" с помощью strptime () в C не удалось - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь преобразовать строку символов "2011-12-12" в значение времени, используя strptime. Может кто-нибудь объяснить, почему это не работает?

Согласно документам:

Формат состоит из нуля или более директив. Каждая директива состоит из одного из следующих: один или несколько символов пробела (как указано в isspace ()); обычный символ (ни '%', ни символ пробела); или спецификацию преобразования.

if( strptime(date, "%y-%m-%d", &tm) != NULL)

1 Ответ

4 голосов
/ 19 октября 2011

Взгляните на документацию .Спецификатор %y предназначен для двухзначных лет без столетия, тогда как %Y для полного года, включая столетие.Когда вы используете %y со своей входной строкой, она анализирует год как 20, а затем, поскольку остальная часть строки (11-12-12) не совпадает с -%m-%d, синтаксический анализ не выполняется.

Либо измените строку формата на использование %Y (рекомендуется), либо измените ввод, чтобы использовать двузначные даты (настоятельно не рекомендуется).

...