我想知道是否可以在不依赖服务器时间(或者在我的情况下,在我的电脑时间)的情况下获得全球UTC时间。
至于现在,如果我做
date('H:i:s')
我得到了我的电脑时间(唯一的变化是我在应用程序中设置的GMT+3或GMT+2),所以如果我将电脑时间更改为2小时23分钟,那么date()
函数的结果也将是2小时23分。
不管我自己的电脑手表如何,是否可以一直拉全球UTC时间?
@Cheery在问题评论中提供了一个很好的链接,但截至2014年,使用现代工具是有意义的:
$dt = new DateTime('now', new DateTimeZone('UTC'));
echo $dt->format('d-m-Y H:i:s');
回答你唯一的问题:
不管我自己的电脑手表如何,是否可以一直拉全球UTC时间?
不,php希望您的本地时钟+OS/php时区设置正确。
参考文献:
- http://php.net/manual/en/datetime.construct.php
- http://php.net/manual/en/datetime.format.php
您可以使用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()));
另一方面,您可以使用网络时间协议:
- Linux系统管理员指南:基本NTP配置
- Ubuntu:与NTP的时间同步
- Mac OS X:将OSX服务器设置为时间服务器
- Windows:Windows时间服务工具和设置