Разбор неоднозначных дат (не зависит от языка) - PullRequest
1 голос
/ 15 января 2009

Мне любопытно, что было бы лучшим способом для обработки неоднозначной строки даты на любом данном языке. Если предварительная проверка введенных пользователем данных не поддерживается, как следует анализировать даты MM / dd / YYYY?

Как бы вы проанализировали следующую неоднозначную дату и по какой причине (статистическая, культурная и т. Д.)?

'1111900' от 11 января 1900 г. [ М / дд / ГГГГ ] или 1 ноября 1900 г. [ ММ / д / ГГГГ ]?

Ответы [ 4 ]

1 голос
/ 15 января 2009

В зависимости от того, насколько важно программное обеспечение, я бы воспринимал любую неоднозначную запись даты как неверный. Вы должны убедиться (в источнике), что ввод даты, который вы получаете, в разумном, недвусмысленном формате. Если вам все еще удается получить что-то вроде «1111900», то ввод неправильный, кто-то явно обошел код проверки правильности, и, вероятно, самое правильное, что вы можете сделать, это отбросить данные.

Конечно, если это не вариант и получение места для даты не критично, вы всегда можете догадаться - но это будет предположением. Я бы определенно избежал этого, если это возможно. Принятие несанкционированного ввода не самая лучшая идея в целом.

1 голос
/ 15 января 2009

Если вы не знаете точно, из какого языка / культуры исходит формат, вам нужно установить общий формат даты.

Я бы рекомендовал формат даты, не зависящий от локали. (YYYY-MM-DD)

Это либо использовать, либо ясно, какая часть года, месяца и дня. (ДД МОН ГГГГ или 22 апреля 2003 г.)

См .: представление w3 о форматировании даты.

Редактировать: опечатка в нейтральном формате даты

0 голосов
/ 15 января 2009

Я предпочитаю, чтобы важная дата была в выпадающих списках предложений или в календаре таким образом, чтобы он всегда приходил в ожидаемом формате.

0 голосов
/ 15 января 2009

Единственный способ узнать разницу между 11 января и 1 ноября в такой системе - через контекст. В противном случае вам нужно пройти через какое-то устранение неоднозначности. Этот конкретный формат даты был бы прекрасным примером патологически разрушительного сжатия.

...