当前位置: 首页 > 面试题库 >

获取当前的GMT世界时间

贲宏硕
2023-03-14
问题内容

我如何获得当前时间?(在JavaScript中)

不像您的计算机时间:

now = new Date;
now_string = addZero(now.getHours()) + ":" + addZero(now.getMinutes()) + ":" + addZero(now.getSeconds());

但是真实的世界时间呢?

我是否需要连接到服务器(很可能是,是哪一个?以及如何从中获取时间?)

我从Google进行的所有搜索都返回(new Date).getHours()

编辑:

如果用户的计算机时间错误,我想避免显示不正确的时间。


问题答案:

首先,要获得准确的GMT时间,您需要一个值得信赖的来源。这意味着某个服务器在某处。Javascript通常只能进行HTTP调用,并且只能对托管有问题的页面的服务器进行调用(相同的源策略)。因此,该服务器必须是GMT时间的来源。

我将您的Web服务器配置为使用NTP与GMT同步其时钟,并通过向页面写入变量来使Web服务器告诉脚本现在几点。否则,当您需要了解时间时,将make和XmlHttpRequest返回到服务器。缺点是,由于涉及到的延迟,这将是不准确的:服务器确定时间,将其写入响应,响应通过网络传输,并且只要客户端的cpu给它一个时间片,就执行javascript,等等。如果页面很大,慢速链接可能会延迟几秒钟。您可以通过确定用户时钟与GMT的距离来节省一些时间,并通过该偏移量调整所有时间计算。当然,如果用户

还请记住,客户端可以更改数据,所以不要相信他们发送给您的任何时间戳。

编辑 : 非常简单易用:使用Javascript添加<script>调用url
元素,这比自己动手做起来容易,因为json-time.appspot.com服务器用作GMT时间的来源,并以允许您解决同源策略的方式提供此数据。对于简单的网站,我建议您这样做。但是,它有一个主要缺点:json-time.appspot.com网站可以在用户页面上执行任意代码。这意味着,如果该站点的运营商想要分析您的用户或劫持他们的数据,他们可以轻松地做到这一点。即使您信任操作员,也需要相信他们没有被黑客入侵或受到破坏。对于商务站点或任何具有高度可靠性问题的站点,我建议您自己托管时间解决方案。

编辑2 : 这意味着,如果需要可靠性,则应自己托管时间服务器。但是,在服务器上添加以相同数据格式响应的页面应该足够容易。基本上,您的服务器接受一个查询,例如

http://json-time.appspot.com/time.json?tz=America/Chicago&callback=foo

并返回一个字符串,例如

foo({
 "tz": "America\/Chicago", 
 "hour": 15, 
 "datetime": "Thu, 09 Apr 2009 15:07:01 -0500", 
 "second": 1, 
 "error": false, 
 "minute": 7
})

请注意,foo()其中包装了JSON对象;这对应于查询中的callback=foo。这意味着当脚本加载到页面中时,它将调用您的foo函数,该函数可以随时随地执行任何操作。此示例的服务器端编程是一个单独的问题。



 类似资料:
  • 我正在开发一个应用程序,其中我只需要获得GMT偏移时间,即印度5.30。我如何实现这个飞镖。 var now = new DateTime.now();var timezoneOffset=now.timeZoneOffset; 打印(timezoneOffset);控制台:05:30:00 如何获得/- GMT偏移量?

  • 问题内容: 当我创建一个新Date对象时,它将被初始化为当前时间,但是在本地时区。如何获取格林尼治标准时间的当前日期和时间? 问题答案: 尽管它的值通常是与UTC有关的,但它没有特定的时区。是什么让你认为这是当地时间? 准确地说:内的值是自Unix时代(UTC)在1970年1月1日午夜开始的毫秒数。相同的纪元也可以在其他时区进行描述,但是传统的描述是以UTC表示的。由于距固定纪元以来的毫秒数,因此

  • Python 提供了不同的包(、时间、),可以在这里看到,以便处理。我犯了一个大错误,使用以下方法来获取当前的GMT时间 在Unix时间戳中获取当前GMT时间的简单方法是什么?

  • 问题内容: 获取当前UTC时间的功能是什么。我已经尝试使用System.getCurrentTime,但是我得到了设备的当前日期和时间。 谢谢 问题答案: 确实会提供自1970年1月1日UTC以来的毫秒数。您看到本地时间的原因可能是因为您在使用实例之前将其转换为字符串。您可以使用s 在任何时区将s 转换为s: 另请参阅此相关问题。

  • 问题内容: 我想要这样的当前时间戳: 1320917972 问题答案: 解决方案是:

  • 问题内容: 我是Android的新手,根据当前时区,我目前面临获取当前时间的问题。 我以“ GMT-7”格式获取时区,即字符串。而且我有系统时间。 有没有一种干净的方法来获取上述给定时区中的当前时间?任何帮助表示赞赏。谢谢, 编辑:试图做到这一点: 问题答案: 我让它像这样工作: 此外,基于该日期的其他所有时间转换也应与此时区一起使用,否则,将使用设备的默认时区,并且将基于该时区转换时间。