javascript - toLocaleString() 在不同浏览器中的不一致行为

标签 javascript jquery datetime multiple-browsers

我正在做一个项目,我必须处理很多日期和时间问题。服务器端技术是 ASP.Net,在客户端我使用 jQuery 和 jQuery Week Calendar(一个 jQuery 插件)。

所以这是描述的问题,我从服务器接收数据时间,格式如下 2012-11-13T04:45:00.00 GMT 格式。

现在在客户端,我希望将此日期时间转换为语言环境日期时间格式,例如 IST、EST、PKT 等。

为此,我使用了 JavaScript 方法 toLocaleString()。这仅在 Chrome 中运行良好,在其他浏览器中运行不一致。

这是它在不同浏览器中的输出:

谷歌浏览器(运行良好):

调用:

new Date ("2012-11-13T04:45:00.00").toLocaleString();

输出:

Tue Nov 13 2012 10:15:00 GMT+0530 (India Standard Time)

Mozilla Firefox:

调用:

new Date ("2012-11-13T04:45:00.00").toLocaleString();

输出:

Tuesday, November 13, 2012 4:45:00 AM

Safari :

调用:

new Date ("2012-11-13T04:45:00.00").toLocaleString();

输出:

Invalid Date

Internet Explorer:

调用:

new Date ("2012-11-13T04:45:00.00").toLocaleString();

输出:

Tuesday, November 13, 2012 4:45:00 AM

现在这些是我测试过的浏览器。

这是问题:

我需要一种方法将数据时间(具有类似 2012-11-13T04:45:00.00 的格式)转换为区域设置日期和时间,无论使用哪个浏览器客户端。

最佳答案

简短的回答是否定的。 toLocaleString 可以按照开发人员的意愿实现。您的问题意味着 Chrome 会输出您想要的字符串

如果你想一致地输出那种格式,你需要使用一个单独的库——比如 DateJS .

要使用 DateJS 做到这一点,将需要一些在 core.js 中可用的标准格式说明符,以及一些仅在 extras.js 中可用的格式说明符。该文档有一个列表 all the format specifiers .

你想要的字符串是:

Tue Nov 13 2012 10:15:00 GMT+0530 (India Standard Time)

因此,要从 DateJS 获取它,您需要:

"D M d Y H:i:s \G\M\TO (e)"

DateJS 的语法是:

new Date ("2012-11-13T04:45:00.00").format("D M d Y H:i:s \G\M\TO (e)");

关于javascript - toLocaleString() 在不同浏览器中的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13428678/

相关文章:

javascript - 如何在 Javascript 中有效地合并两个数组?

c# - 在 Nullable DateTime 对象上调用 AddDays

java - 如何在Java 8中查找下个月的第一个星期日?

javascript - 隐藏系列而不隐藏 y 轴

javascript - 购买元素时出现未处理的拒绝 Opensea 错误

javascript - 从简单数组创建关联数组,每个数组项的键自动递增

c# - jQuery.ajax 调用有时不会触发 C# WebMethod

java - 使用 Spring3 mvc 时出现 ajax 问题。返回对象列表时出现 406 错误

python - 如何在 python 中只比较日期(而不是时间)

javascript - JS 在 AJAX 调用返回输出之前返回?