来自 jquery 的格式化日期在 IE 中显示 NaN

Posted

技术标签:

【中文标题】来自 jquery 的格式化日期在 IE 中显示 NaN【英文标题】:Formatted date from jquery displays NaN in IE 【发布时间】:2017-07-18 13:51:34 【问题描述】:

我在网页上有以下代码:

var date = new Date(row.EventDate.replace('T', ' ')); // 'T' comes from sql server
var month = date.getMonth() + 1;
var day = date.getDate();
var year = date.getFullYear();
var hours = date.getHours();
var minutes = date.getMinutes();
return '<span>' +
    (month > 9 ? month : '0' + month) +
    '/' +
    (day > 9 ? day : '0' + day) +
    '/' +
    year +
    ' ' +
    (hours > 9 ? hours : '0' + hours) +
    ':' +
    (minutes > 9 ? minutes : '0' + minutes) +
    '</span>';

Chome 按预期显示为02/27/2017 13:30,但 IE 显示为NaN/NaN/NaN NaN:NaN

我已经阅读了几篇关于设置具有此类问题的日期字段的帖子,但我正在设置一个文本字符串。

我在哪里不知道为什么 IE 抱怨某事不是数字?

【问题讨论】:

我假设 row.EventDate 的格式是 YYYY-mm-dd hh:mm:ss?如果是这样,那是 IE 一直在努力解决的问题。看这里:biostall.com/… @Rick Burns - 是的,它来自 SQL Server 的直接 Linq 拉取 @RickBurns 由您提供的惊人链接。伟大的 这对解决方案很有用:-***.com/a/2182529/4248328 Date constructor returns NaN in IE, but works in Firefox and Chrome的可能重复 【参考方案1】:

IE 已经为此苦苦挣扎了一段时间。以下格式适用于大多数(所有)现代浏览器。更改您的 row.EventDate 模型输出以匹配以下格式之一,它应该可以正常工作。

来源:http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari/

var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date("02/07/2011"); // "mm/dd/yyyy"
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
var d = new Date(1297076700000); // milliseconds
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC

【讨论】:

唯一的跨浏览器格式是 ISO 8601 格式(即“2011-02-07T11:05:00Z”) 天哪!感谢 Mike 的回复,我尝试从我的代码中删除 .replace('T',' '),将提要从 2017-01-01 00:00:00 更改为 new Date()2017-01-01T00:00:00 添加它完美!!!! @RickBurns 你在那个参考上看到浏览器的版本号了吗?自 Chrome 10 版以来,情况发生了变化…… @MikeMcCaughan,正是我的观点。这个来自 Chrome 版本 10 的示例今天仍然是跨浏览器支持的日期格式。不仅仅是 ISO 8601。 嘿,如果你想依赖那些永不改变的格式,那就继续吧,但规范只定义了 ISO 8601。

以上是关于来自 jquery 的格式化日期在 IE 中显示 NaN的主要内容,如果未能解决你的问题,请参考以下文章

如何显示日期来自jQuery instated显示当前日期?

如何显示日期来自 jQuery instated 的显示当前日期?

jquery 格式化时间

Chrome 不接受使用 jQuery 验证的特定日期格式

如何在 twig 中显示来自 Unix 时间戳的格式化日期?

日期时间值未显示在 jQuery 数据表中