javascript - UTC 日期对象操作

标签 javascript date utc

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/

相关文章:

javascript - 如何在momentjs中设置时间和日期

javascript - 在 jsdom 中加载 Google Maps API

Javascript 闭包性能

javascript - 动画();在 Javascript 中卡住一秒钟

PHP setlocale 没有效果

go - UTC()调用是否在rand.Seed(time.Now()。UTC()。UnixNano())中冗余?

c# - 在 JavaScript 计算后保存时值不会更新

php - 在月初和月末获取一周的开始日期和结束日期

javascript - 将 Javascript 日期转换为 RFC 3339(谷歌日历日期)

php - 在 UTC 中存储日期和时间并在 PHP/MySQL 中将它们转换为本地时间