【问题标题】:Jquery Date.parse returning NaN in Chrome browser?Jquery Date.parse 在 Chrome 浏览器中返回 NaN?
【发布时间】:2011-11-01 10:06:20
【问题描述】:

我有一个场景,我必须解析两个日期,例如开始日期和结束日期。

var startdate = '02/01/2011';
var enddate = '31/12/2011';

但是如果我们提醒开始日期

 alert(Date.Parse(startdate)); i will get 1296498600000

但如果我提醒结束日期

 alert(Date.Parse(enddate)); i will get NaN

但这在除 Chrome 之外的其他浏览器中有效,但在其他浏览器中

alert(Date.Parse(enddate)); i will get 1370889000000

有人知道解决方法吗?

【问题讨论】:

  • 无法复制,为我工作:jsfiddle.net/b77DE/1
  • 哦,顺便说一句,parse 方法期望字符串被格式化为 RFC822 或 ISO 8601 日期。
  • 这与文化有关。当我提醒 enddate 时,我得到 NaN
  • Date.parse(小写!)。对于Date.parse,日期格式必须为'mm/dd/yyyy'!
  • @kara:- 正如你所说,这是特定于文化的问题,那么除了 chrome 之外,它如何在其他浏览器中起作用?

标签: javascript jquery google-chrome


【解决方案1】:

如果您想解析没有本地差异的日期,请使用以下内容,而不是 Date.parse():

var enddate = '31/12/2011'; //DD/MM/YYYY
var split = enddate.split('/');
// Month is zero-indexed so subtract one from the month inside the constructor
var date = new Date(split[2], split[1] - 1, split[0]); //Y M D 
var timestamp = date.getTime();

另请参阅:Date

【讨论】:

  • 这对我解决问题有很大帮助,谢谢 Rob
  • 谢谢,遇到了类似的错误,你救了我,+1
  • 小心使用这个 - 它只是让我感到困惑,因为由于某种奇怪的原因,月份似乎是 0 索引...... var date = new Date(split[2], parseInt(split[1] - 1 ), 分裂[0]);虽然有效。
  • 它肯定看起来是 dd/mm/yyyy - 使用 28/06/2012 然后在警报中显示日期给了我 2012 年 7 月 28 日:S
  • @TomAllen 哎呀,我误解了你的第一条评论。我以为你的意思是那个月在split 数组的索引零处。该月确实从索引零开始计数,请参阅MDN: Date。
【解决方案2】:

根据this

日期字符串 表示 RFC822 或 ISO 8601 日期的字符串。

我已经尝试了您的代码,并且我还收到了NaN 作为结束日期,但如果我交换日期和月份,它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2012-06-09
    • 2021-06-30
    • 2022-11-13
    • 1970-01-01
    相关资源
    最近更新 更多