从任意字符串中解析日期

时间:2014-10-30 05:06:23

标签: javascript date

所以我需要编写一个模块/函数来分析字符串并解析以任意形式给出的所有可能的日期值,例如:

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')  

它有多难?我是否应该费心去尝试,或者比我想象的要困难得多?也许某人已经做过类似的事情?

只有日期,时间并不重要,我也需要在客户端做到这一点,疯了呃?

2 个答案:

答案 0 :(得分:3)

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

祝你好运!

答案 1 :(得分:1)

我真的要看你想要的定制方式。你最好的选择是用尽当前的选项http://momentjs.com/,甚至是“替换”的东西,http://www.datejs.com/。这些库并不是为了做到这一点,但你可能要么扭曲它们,要么将它们分叉并根据你的目的修改它们。

如果你不能从中获得足够的自定义,我建议你去描述你想要的日期语法作为更多的语法,然后使用解析器或解析器生成器创建一些可以正确解析你的东西想。 http://pegjs.majda.cz/http://marijnhaverbeke.nl/acorn/领域中的某些内容。

对于某些上下文,我遇到了类似的情况只有时间,并最终使用Scala的标准解析器组合器库来实现这种类型的东西。 https://github.com/scala/scala-parser-combinators。这只是因为我能够表达一个相当高级别的语法而没有进入解析细节的杂草。