我允许用户以他们喜欢的任何格式输入日期时间,只要 Ruby 的 Time.parse 方法可以处理它。现在我需要在 javascript 中比较这些日期时间。是否有任何与 Ruby 的 Time.parse 方法等效的 JavaScript 方法?
我需要一些可以解析的东西,例如“2012 年 10 月 13 日上午 8:15”。我尝试了 datejs,但它无法处理“at”字。我真的更喜欢只需要一个函数调用的东西。
我允许用户以他们喜欢的任何格式输入日期时间,只要 Ruby 的 Time.parse 方法可以处理它。现在我需要在 javascript 中比较这些日期时间。是否有任何与 Ruby 的 Time.parse 方法等效的 JavaScript 方法?
我需要一些可以解析的东西,例如“2012 年 10 月 13 日上午 8:15”。我尝试了 datejs,但它无法处理“at”字。我真的更喜欢只需要一个函数调用的东西。
JavaScript 语言对于它接受的日期格式很挑剔(并且实现方式各不相同),因此不使用库就没有希望。
Date.js很容易成为您的最佳选择;但是,正如您所指出的,肯定会有一些格式对用户来说非常有意义,但图书馆却无法预料到。
作为解决方法,我建议您将 Date.js 解析器包装在您必须维护的自定义清理函数中:
// using Date.js
function parseDate(str) {
var wordsToRemove = ['on', 'at'] // ...
, regex = new RegExp('\\b(' + wordsToRemove.join('|') + ')\\b', 'g');
return Date.parse(str.replace(regex, ''));
}
这有点晚了,但希望它仍然会有所帮助:
如果您只解析美国语言环境日期字符串,请查看Sherlock.js。
唯一的限制是它不支持指定年份或过去日期。它可以解析“2012 年 10 月 13 日上午 8:15”,但它将返回 2013 年 10 月 13 日上午 8:15 的日期对象,因为它总是向前看。您可以编写一些正则表达式,例如/\b20\d\d\b/
在需要时自己从字符串中解析出年份。
披露:我是 Sherlock.js 的创建者
Datejs有一个非常令人印象深刻的东西来处理 javascript 中的日期
试试http://momentjs.com/,有史以来最好的时间库!