所以,我的服务器有ISO日期时间,例如“2012-06-11T18:05”。这个时间是UTC。当我将该字符串传递给Chrome或IE时,他们给我的时间与当地时间一样(因此,对于CDT,它给出了01:05 PM)(这就是我想要的)。如果我把它传递给Firefox,它假定它已经在当地时间,它在当地时间下午6:05报告。所以,我想通过做“2012-06-11T18:05 + 0000”来确定它是字符串的UTC时间。这在Chrome和Firefox中效果很好,但IE将其报告为无效日期。
什么是跨浏览器,符合标准的方式,我可以指定给定的日期时间字符串代表UTC时间?
答案 0 :(得分:1)
您可以自己解析传入的数据,并使用它来构建有效的日期对象。
某些人喜欢这样:// input (from somewhere)
var incomingDate = "2012-06-11T18:05";
// parse Input using Regexp
var parsedIncomingDate= incomingDate.match(/^(\d{4})\-(\d{2})\-(\d{2})T(\d{2}):(\d{2})$/);
// convert parsed UTC times into ms accoring to the users browser timezone
var getUTCms = Date.UTC(parsedIncomingDate[1],parsedIncomingDate[2], parsedIncomingDate[3], parsedIncomingDate[4], parsedIncomingDate[5]);
// ms to Date Object
var dateObj = new Date(getUTCms);
答案 1 :(得分:1)
如果您正在寻找一个好日期库,我写了moment.js来解决这样的问题。它还具有自动ISO8601解析功能。
moment("2012-06-11T18:05"); // parse as local time
moment("2012-06-11T18:05+0000"); // parse as utc time
查看http://momentjs.com/docs/处的文档,了解库可以执行的更多示例。
答案 2 :(得分:0)
您可以像这样使用Date.UTC
方法:
var my_date = new Date(Date.UTC(2012, 5, 11, 18, 5, 0));
请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/UTC