我正在做一个项目,我必须处理很多日期和时间问题。服务器端技术是 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/