0

我允许用户以他们喜欢的任何格式输入日期时间,只要 Ruby 的 Time.parse 方法可以处理它。现在我需要在 javascript 中比较这些日期时间。是否有任何与 Ruby 的 Time.parse 方法等效的 JavaScript 方法?

我需要一些可以解析的东西,例如“2012 年 10 月 13 日上午 8:15”。我尝试了 datejs,但它无法处理“at”字。我真的更喜欢只需要一个函数调用的东西。

4

4 回答 4

2

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, ''));
}
于 2012-12-19T18:53:26.480 回答
0

这有点晚了,但希望它仍然会有所帮助:

如果您只解析美国语言环境日期字符串,请查看Sherlock.js

唯一的限制是它不支持指定年份或过去日期。它可以解析“2012 年 10 月 13 日上午 8:15”,但它将返回 2013 年 10 月 13 日上午 8:15 的日期对象,因为它总是向前看。您可以编写一些正则表达式,例如/\b20\d\d\b/在需要时自己从字符串中解析出年份。

披露:我是 Sherlock.js 的创建者

于 2013-01-11T19:43:46.117 回答
0

Datejs有一个非常令人印象深刻的东西来处理 javascript 中的日期

于 2012-12-19T18:32:33.107 回答
0

试试http://momentjs.com/,有史以来最好的时间库!

于 2012-12-19T18:34:41.707 回答