在我的“工具箱”中,我正在使用这个功能:
function dataAttuale() {
$now = new DateTime();
$dataAttuale = $now->format(DateTime::ISO8601);
$offset = $now->getOffset();
date_default_timezone_set('UTC');
$nowUTC = new DateTime();
$dataUTC = $nowUTC->format(DateTime::ISO8601);
$orario = array();
$orario['dataAttuale'] = $dataAttuale;
$orario['dataUTC'] = $dataUTC;
$orario['offset'] = $offset;
return $orario;
}
我得到这个数组
Array
(
[dataAttuale] => 2013-10-18T11:03:52+0200
[dataUTC] => 2013-10-18T09:03:52+0000
[offset] => 7200
)
所以我可以在一个日期时间 MySql 字段中保存一个引用 UTC 的日期时间。
现在,我对此有些麻烦。
1)我也会保存偏移量(以秒为单位)。什么是最好的 Mysql 字段?我认为最大秒数可以是 +14hour * 60 * 60 = 50400 和 -12hours*60*60 = -43200
2)你认为显着保存还抵消?即,例如,几个 API 服务以 UTC + 偏移量返回日期......
非常感谢!
更新:
谢谢你们俩。现在我以 UTC 格式和 varchar 时区保存 MySQL 日期时间。通过一些代码,我得到了我想要的:
$orario = new DateTime($value['creazione'], new DateTimeZone($value['timezone']));
$orario = $orario->format(DateTime::ISO8601);
输出是(对于欧洲/罗马)
2013-10-19T09:27:54+0200
对于美国/蒙特利尔
2013-10-19T09:29:16-0400
对于澳大利亚/墨尔本
2013-10-19T09:30:31+1100
(分钟//秒的差异是在我的 PHP 脚本中更改默认时区的时间)。
现在我认为:
1)我可以嘲笑 Y2038 错误,放弃(叹息:()时间戳:(
2)我可以安全地环游世界并使用我自己的日历(naaaa ...我将永远使用谷歌日历,当然)