UTC 的事情真的让我抓狂...我试图在现场获得 UTC 格式的日期和时间,这样它就不会受到任何时区的影响。
我所做的是创建一个日期对象
var d = new Date();
//convert it to utc
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var utc_date = new Date(utc);
utc_date.setHours(20,0,0)
console.log(utc_date.getTime()) // I want this to be same irrespective of timezone, but don't know why it is changing
请指导我哪里做错了..?
更新: 我想创建一个时间下拉列表,如http://jsfiddle.net/HNyj5/这里的概念是我使用来自选定日期的客户端或来自数据库的时间戳,然后动态生成此下拉列表。所以我希望服务器/客户端上的时间戳相似,这就是我尝试使用 UTC 日期对象的原因。
最佳答案
您可以像这样从本地时间检索 UTC 日期时间(示例时区 = GMT+0100):
var currentUTC = new Date; //=>Mon Mar 18 2013 13:53:24
currentUTC.setMinutes(currentUTC.getMinutes()+currentUTC.getTimezoneOffset();
//=> currentUTC now: Mon Mar 18 2013 12:54:06
//or
var someUTC = new Date('1998/03/18 13:52'); //=> Wed Mar 18 1998 13:52:00
someUTC.setMinutes(currentUTC.getMinutes()+currentUTC.getTimezoneOffset();
//=> someUTC now: Wed Mar 18 1998 12:52:00
或者作为带有一行的日期扩展:
Date.prototype.UTCFromLocal = function(){
var a;
return new Date(Date.prototype.setMinutes
.call(a = this,a.getMinutes()+a.getTimezoneOffset()));
}
// usage (current date and time = Mon Mar 18 2013 14:08:14 GMT+0100
var d = new Date().UTCFromLocal(); //=> Mon Mar 18 2013 13:08:14
要检索(从 UTC 日期时间),您可以使用:
Date.prototype.LocalFromUTC = function(){
var a;
return new Date(Date.prototype.setMinutes
.call(a = this,a.getMinutes()-a.getTimezoneOffset()));
}
关于javascript - UTC 日期对象操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476996/