Вы говорите, что в конечном итоге вам нужно сравнить два time_t
значения. Но как вы получаете эти ценности? Если они отправляются в виде строк, то Байрон Уитлок ответ вероятен, если ваша машина поддерживает getdate()
. Если они уже time_t
, то вы можете сравнить значения времени. Если вам нужно сравнить time_t
, сгенерированный локально, со строкой, сгенерированной удаленно, то вы оказались между молотом и наковальней; Вы должны как-то знать, какой стиль ISO 8601 используется при отправке данных.
Обратите внимание, что ISO 8601 ожидает, что две системы, обменивающиеся информацией, согласятся с обозначением, которое они собираются использовать, и, в частности, что они согласятся, какие поля могут быть пропущены (если таковые имеются) и будет ли пунктуация разделять поля , Если вы знаете (один) формат или можете настроить свою систему таким образом, чтобы для каждого источника данных вы использовали формат ISO 8601, то функция POSIX strptime()
может обрабатывать практически все - хотя вам нужно знать, как ваш код будет обрабатывать любые неопределенные поля.
Полное название стандарта: " ISO 8601: 2004 Элементы данных и обмен ими
форматы - Обмен информацией -
Представление даты и времени". Его раздел §3.7 Взаимное соглашение гласит:
Некоторые представления, указанные в настоящем международном стандарте, допускаются только по взаимному согласию
партнеры по обмену информацией. Такое соглашение должно гарантировать, что поля, в которых представительство
могут не иметь других представлений, которые нельзя однозначно отличить от
согласованное представление.