我必須將一個非常大的數據集從一個系統遷移到另一個系統。其中一個「源」列包含日期,但實際上是一個沒有約束的字符串,而目標系統要求格式爲yyyy-mm-dd的日期。「智能」(原諒)日期解析器?
許多(但不是全部)源日期格式爲yyyymmdd。所以,強迫他們到期望的格式,我這樣做(在Perl):
return "$1-$2-$3" if ($val =~ /(\d{4})[-\/]*(\d{2})[-\/]*(\d{2})/);
當源日期移動從「通用」 YYYYMMDD遠就會出現問題。目標是在放棄之前挽回儘可能多的日期。示例源字符串包括:
21/3/1998,2004年 月, 2001年, 97年3月4日
我可以嘗試儘可能多的實例匹配我可以經常連續發現如上面的表達式。
但是有什麼更聰明的做法嗎?我是不是重新發明輪子?有沒有一個圖書館可以做類似的事情?我找不到任何相關的谷歌搜索「原諒日期解析器」。 (任何語言都可以)。
3/4/97 - 是3月4日還是4月3日? – 2009-07-09 10:50:16
取決於您所在的地區。在美國,那是3月4日。在美國之外,可能在4月3日。 – 2009-07-09 16:42:35
我會想象大多數日期工具將有一種方法來設置如何處理像3/4/97的情況下的默認選項。匆匆一瞥,下面列出的至少兩個Perl模塊都有這樣的選項。 – Telemachus 2009-07-09 17:24:51