【问题标题】:Nan value showing in windows safari browser [duplicate]Windows safari 浏览器中显示的 Nan 值 [重复]
【发布时间】:2013-12-23 14:30:08
【问题描述】:

我的脚本在 Chrome 和 Firefox 中运行良好,但是当尝试与 Safari 版本 5.1.7 相同时,这可能是显示 NAN 值的窗口的最新版本,任何人都可以帮我解决这个问题,我尝试了 parseInt 但它没有没用。

这是我的代码;

var date1 = new Date($('#arrival').val());
var  date2 = new Date($('#departure').val());
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
   //parseInt("0"+$(this).html(),10) 
diffDays=parseInt(diffDays);
console.log('Selected diffDays: '+diffDays);

parseint 的注释部分显示 0。

【问题讨论】:

  • 鉴于您的问题代码中没有任何 PHP,您为什么要将此问题标记为 PHP?
  • 这能回答你的问题吗? Invalid date in safari

标签: javascript


【解决方案1】:

最可能的答案是 Safari 不支持您从 #arrival#departure 字段读取的日期格式。 JavaScript 只有 one date string format 在兼容的实现中是必需的,而且这是相当新的(大约三年前,从 ES5 开始)。 (也就是说,我从未遇到过不支持yyyy/MM/dd 的浏览器,但生成日期的时区会有所不同。)

如果您将无效字符串输入new Date(),您将获得无效日期。 getTime 方法返回带有无效日期的 NaN,然后当然会在整个计算过程中传播(因为所有数学运算符的结果都是 NaN,如果任何操作数是 NaN)。

解决办法是确保字符串是支持的格式,或者自己解析。还有一些库可以提供帮助,例如MomentJS

【讨论】:

  • i'm pass for #arrival has in this format =date('Ym-d',strtotime($this->start))?> 在console.log上显示的日期无效日期格式应采用
  • @user3129830:很遗憾,该版本的 Safari 似乎还不支持 ES5 标准日期格式;我刚试过here。如果您改用斜杠 (example),它可能会开始工作;该格式 (yyyy/MM/dd) 不在规范中,但得到了广泛的支持。当心时区问题。或者,再次使用库。
猜你喜欢
  • 2021-05-28
  • 2017-01-15
  • 1970-01-01
  • 2016-01-27
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
相关资源
最近更新 更多