获取全球UTC时间而不依赖服务器时间

时间:2014-10-12 21:54:52

标签: php date

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

至于现在,如果我这样做

date('H:i:s')

我得到我的电脑时间(唯一的变化是我在应用程序中设置的GMT + 3或GMT + 2)所以如果我将我的电脑时间改为2小时23分钟,那么{{1}功能结果也将是2小时23分钟。

无论我自己的PC手表如何,总是可以拉动全球UTC时间吗?

2 个答案:

答案 0 :(得分:3)

@Cheery在问题评论中提供了一个很好的链接,但截至2014年的外部 - 使用现代工具是有意义的:

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

回答你唯一的问题:

  

无论我自己的PC手表如何,总是可以拉动全球UTC时间吗?

不,php希望你的本地时钟+ OS / php时区设置正确。

参考文献:

答案 1 :(得分:0)

您可以使用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()));

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