【问题标题】:get global UTC time without relying on server time在不依赖服务器时间的情况下获取全球 UTC 时间
【发布时间】:2014-12-07 10:50:43
【问题描述】:

我想知道是否有可能在不依赖服务器时间(或者在我的情况下依赖我的 PC 时间)的情况下获得全球 UTC 时间。

至于现在,如果我这样做了

date('H:i:s')

我得到了我的 PC 时间(唯一的变化是我在应用程序本身中设置的 GMT+3 或 GMT+2)所以如果我将我的 PC 时间改回 2 小时 23 分钟,那么date() 函数结果也将返回 2 小时 23 分钟。

无论我自己的 PC 手表如何,是否可以始终拉取全球 UTC 时间?

【问题讨论】:

  • 查看从 [Google][1] [1] 获取时间的链接:stackoverflow.com/questions/12674411/…
  • @Cheery 它不起作用。如果我改变了我的电脑时钟,该函数仍然根据我的电脑时钟返回时间。
  • @kfirba 你的意思是your server = your pc?比没有办法做到这一点。您可以向时间服务器发出请求,但您必须在对服务器的 http 请求之间保持并相应地更新此值,因为您不能对每个 http 请求执行此时间请求。

标签: php date


【解决方案1】:

@Cheery 在问题 cmets 中提供了一个很好的链接,但截至 2014 年,使用现代工具来解决这个问题是有意义的:

$dt = new DateTime('now', new DateTimeZone('UTC'));
echo $dt->format('d-m-Y H:i:s');

并回答你唯一的问题:

无论我自己的 PC 手表如何,是否可以始终拉取全球 UTC 时间?

不,php 期望您的本地时钟 + OS/php 时区设置是正确的。

参考资料:

【讨论】:

  • 谢谢,我想我做不到。
  • @kfirba 没错:您不能将一些随机时间作为您的当地时间,并期望一切正常。
  • 嗯,那只是我的幻想:)
【解决方案2】:

您可以使用 Web 服务解决您的问题,但您必须将 Unix 时间作为参数传递。

例如,使用World Weather Online API(无需任何验证;您需要注册并使用您的 API 密钥):

<?php
$loc = 'utc'; 
$key = 'xkq544hkar4m69qujdgujn7w';

$url = 'http://api.worldweatheronline.com/free/v1/tz.ashx?format=json&'
       . http_build_query(array('key' => $key, 'q' => $loc,));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1); 
$json_response = curl_exec($ch);
curl_close($ch);

$response = json_decode($json_response);
$tz = $response->data->time_zone[0]->localtime;

$timestamp = strtotime($tz);

var_dump($tz);
var_dump( date('H:i', $timestamp) );

此服务不检索秒数(只是一个示例;您可以选择其他服务),但您可以制作自己的服务:

<?php
date_default_timezone_set('UTC');
header('Content-Type: application/json');
echo json_encode(array('timestamp' => time()));

另一方面,您可以使用网络时间协议:

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多