2015-05-04 149 views
1

好吧,我知道这似乎是多余的,也许我错过了一些东西。但所有我看到在获取UTC日期的stackoverflow是依赖本地时间或计算机时间。获取“当前”UTC日期和时间。独立在当地时间/计算机时间

如:

var utcDate = new Date(Date.UTC()); 

..

var today = new Date(); 
var YY = today.getUTCFullYear(); 
var MM = today.getUTCMonth() + 1; 
var DD = today.getUTCDate(); 
var h = today.getUTCHours(); 
var m = today.getUTCMinutes(); 

我猜是因为 “日期()”,这是依赖于当地时间\计算机时间。我知道我很喜欢这个,但我认为这是它的工作原理。

现在我想获取“CURRENT”(UTC日期和时间),它不依赖于本地/计算机时间。

因为当我尝试运行代码时,当我尝试配置计算机时间时,UTC日期和时间会发生变化。这显然取决于Local \ Computer时间。

我该怎么做?

+0

有两点需要注意:1)他们不应该,如果你改变你的电脑的时区和不改变你的电脑的时间; 2)通常这会被服务器端完成,你必须控制硬件,而不是客户方(即用UTC时区保存数据) –

回答

2

下面是使用时间服务器来获取GMT日期时间

function getTime(zone, success) { 
var url = 'http://json-time.appspot.com/time.json?tz=' + zone, 
    ud = 'json' + (+new Date()); 
window[ud]= function(o){ 
    success && success(new Date(o.datetime), o); 
}; 
document.getElementsByTagName('head')[0].appendChild((function(){ 
    var s = document.createElement('script'); 
    s.type = 'text/javascript'; 
    s.src = url + '&callback=' + ud; 
    return s; 
}) 

这里的一个完整的例子是一个jQuery版本

$.getTime = function(zone, success) { 
var url = 'http://json-time.appspot.com/time.json?tz=' 
     + zone + '&callback=?'; 
$.getJSON(url, function(o){ 
    success && success(new Date(o.datetime), o); 
});}; 

然后,只需调用它。

$.getTime('GMT', function(time){alert(time);}); 
+1

正如我在我的问题中所说的那样,并在本地时间/计算机时间内输入“获取当前”UTC日期和时间。 在你的回答中,似乎utcDate.getTime()取决于计算机/本地时间。我试图运行它,但不幸的是,当我试图改变它时,它不断变化并适应我的系统时间。 –

+0

如果你想要格林威治标准时间而不依赖于使用电脑时钟,你必须打一台服务器才能得到它。在那种情况下,为什么不这样做呢?将其包装在脚本标记中,并将日期时间解析为返回的json。 http://json-time.appspot.com/time.json?tz=GMT –

+0

此刻我的一个大问题。看到我的第一篇文章[链接](http://stackoverflow.com/questions/29935278/script-tag-inside-a-javascript-or-jquery-in-sharepoint-office-360?noredirect=1#comment47996946_29935278)。我在一个虚拟主机网站上,我无法使用脚本标记。这就是为什么我渴望找到另一种方式。或者可能吗? 我想我的问题是不可能的。 –