【问题标题】:How to get the real UTC timestamp (client independent)?如何获得真正的 UTC 时间戳(独立于客户端)?
【发布时间】:2014-11-19 14:16:51
【问题描述】:

有没有办法获得真正的当前UTC时间戳,而不依赖于可能无法在每个客户端上正确设置的客户端时间?

我知道使用 JavaScript 的 getTime() 我可以以毫秒为单位获取 UTC 时间戳。它与客户的时区无关,但我认为它取决于客户的当前时间。

我正在尝试制作一个显示真实 UTC 时间的实时时钟,因此客户端的时间设置是否正确并不重要。

【问题讨论】:

  • 您应该查看 NTP 或任何其他网络时间协议。
  • 请查看我的编辑,这是一个基本的服务器同步实时时钟。

标签: javascript php date datetime timestamp


【解决方案1】:

获取此 JSON:

http://json-time.appspot.com/time.json

或者

http://www.timeapi.org/utc/now

如果你有的话,你也可以从你自己的服务器上获取它。

以第一个为例(带间隔):

HTML:

<div id="time">Click the button</div>
<button id="gettime">Get the time</button>

JAVASCRIPT(使用 JQuery):

$("#gettime").click(function() {
setInterval(ajaxCalltoGetTime, 1000);
});


function ajaxCalltoGetTime() {
$.ajax({
type: "GET",
    url: 'http://json-time.appspot.com/time.json',
    dataType: 'jsonp'
})
.done(function( msg ) {
    $("#time").html(msg.hour + ":" + msg.minute + ":" + msg.second );
});

JSFiddler: http://jsfiddle.net/op8xdsrv/

【讨论】:

  • 我认为你的 JSFiddle 不能正常工作(至少在 Chrome 上不能)。
  • 正在工作,即不工作是小时的提要:json-time.appspot.com/time.json
  • 但是有很多网站都有这个服务。
【解决方案2】:

您可以信任服务器的时钟*。只需将当前的 UNIX 时间戳从服务器发送到客户端。然后可以在 JavaScript 中使用Date(value) 构造函数。

<script>
var serverTime = new Date(<? php echo time(); ?> * 1000);
console.log(
    serverTime.getUTCFullYear(), 
    serverTime.getUTCMonth() + 1, 
    serverTime.getUTCDate(), 
    serverTime.getUTCHours(), 
    serverTime.getUTCMinutes(), 
    serverTime.getUTCSeconds()
);
// use this time to seed your JavaScript clock
</script>

* 一般来说,服务器会定期与时间提供者同步它们的时间。

【讨论】:

    【解决方案3】:

    您可以使用 timeanddate api 来获取日期和时间,而不依赖于客户端计算机或您的服务器在 php 中。然后将其发送到 javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 2012-12-03
      • 2013-03-20
      相关资源
      最近更新 更多