2014-10-30 40 views
1

所以我需要寫一個模塊/功能會分析串並分析以任意形式給出所有可能的日期值,例如:如何很難會解析日期(S)出任意字符串的

bla-bla-bla today  --> new Date() 
january foo Mar 11th bar --> [new Date('2014/1/1'), new Date('2014/3/11')] // more than one date 
lorem 11/08 ipsum  --> new Date('2014/11/08') 
monday     --> new Date('2014/10/27') 

它是?我是否應該嘗試一下,或者比我想像的要困難得多?也許有人已經做過這樣的事情?

只有日期,時間並不重要,我也需要在客戶端上做,瘋狂的呃?

回答

3

一種解決方案是使用http://momentjs.com/docs/#/plugins/parseformat/

祝你好運!

+0

嗯,有趣的我會嘗試。謝謝 – Agzam 2014-10-30 05:14:24

+0

StackOverflow答案應該是自包含的(不只是由一個外部鏈接組成)。你推薦momentjs很好,但你也應該提供一個代碼示例來回答這個問題。 – naomik 2014-10-30 05:16:11

1

我真的要看你是如何定製它。你最好的選擇是用盡現有的選項,http://momentjs.com/甚至是它被「替換」的東西,http://www.datejs.com/。這些庫並不是要這樣做的,但你可能會扭曲它們,或者爲了你的目的而修改它們。

如果你不能從中得到足夠自定義的東西,我會建議你去描述日期語法的路線,因爲你需要更多的語法,然後使用解析器或解析器生成器來創建一些可以正確解析什麼的東西你要。東西在http://pegjs.majda.cz/http://marijnhaverbeke.nl/acorn/的領域。

對於某些上下文,我只用了一段時間的類似情況,並最終使用Scala的標準解析器組合庫來實現此類功能。 https://github.com/scala/scala-parser-combinators。這只是因爲我能夠表達一個相當高級的語法並且沒有陷入解析細節的雜草。

+0

'datejs'真棒,可能我應該告訴我的用戶將「日期」放在curlies中,並嘗試僅解析這些日期。仍然很棒,如果他們可以做一些像「{昨天}」的事情 – Agzam 2014-10-30 05:28:12