2009-01-14 92 views
1

我很好奇什麼纔是處理任何給定語言中含糊不清的日期字符串的最佳方法。當預先驗證您的用戶輸入不是一個選項時,應如何解析MM/dd/YYYY日期?解析不明確的日期(與語言無關)

你會如何解析下列不明確的日期和什麼原因(統計,文化等)?

'1111900'如1900年1月11日[M/DD/YYYY]或1900年11月1日[MM/d/YYYY]?

回答

1

除非您確切知道格式來自何種語言/文化,否則您需要建立一個通用日期格式。

我會推薦一種叫locale-neutral日期格式的東西。 (YYYY-MM-DD)

對於年份,月份和日期哪個部分是用途或明確的。 (DD MON YYYY或2003年4月22日)

請參閱:the w3's view日期格式。

編輯:輸入了錯誤的區域中性日期格式

+0

按照建議,爲什麼不是YYYY-MM-DD? – Jimmy 2009-01-14 22:55:30

1

根據軟件是多麼的重要,我會像對待任何明確的日期錄入爲無效的輸入。你應該確保(源頭)你輸入的日期是一個明智的,不含糊的格式。如果你仍然設法得到諸如「1111900」之類的東西,那麼輸入是不正確的,某人明顯繞過了有效性檢查代碼,並且可能最正確的做法是放棄數據。

當然,如果這不是一個選項,並且獲取日期點並不重要,那麼您總是可以猜測 - 但它會是是一個猜測。如果可能的話,我肯定會避免這種情況。接受unsanitised輸入通常不是最好的主意。

0

在這樣一個系統中,瞭解1月11日和11月1日之間差異的唯一方法是通過上下文。否則,你需要進行某種消歧。該特定的日期格式將是病理性破壞性壓縮的完美例子。

-1

我的偏好是當重要日期使用提供下拉式或日曆時,它總是以預期的格式出現。