Парсер для извлечения времени из заданной пользователем строки даты и времени
Я планирую написать модуль на C в среде Linux, чтобы читать время из заданной пользователем строки даты и времени. Пользователь может ввести время, как показано ниже (не ограничиваясь). Он может пропустить дату и ввести только время.
DD/MM/YY HH-MI-SS
DD/MM/YYYY HH/MI/SS
YYYY-MM-DD-HH-MI-SS-MSC
YYYY-DDD-HH-MI-SS
HH-MI-SS
HH/MI/SS
.......
Как предложить такое средство пользователю? Пользователь должен иметь возможность выбирать свое выражение. Модуль должен иметь возможность извлекать дату и время из этого выражения. На первом этапе он должен определить свое выражение. На втором этапе он должен ввести время согласно его выражению.
1 ответ
Если вы заранее знаете, что это за формат (потому что пользователь сказал вам), тогда стандарт strftime()
Функция может быть использована для обработки всех опций, которые вы показываете. Вы должны были бы перевести обозначение, которое вы использовали в %X
нотация используется strftime()
, но это в основном механически (за исключением того, что ваш ММ неоднозначен между месяцем и минутой).
Если вы не знаете заранее, что это за формат, тогда жизнь намного сложнее. В частности, учитывая одно значение, в коде нет надежного способа различить:
DD/MM/YY
MM/DD/YY
HH/MI/SS
Учитывая достаточное количество образцов данных, вы, вероятно, можете различить их, но вам нужно достаточно образцов.