我有来自不同时区的客户,我需要分析他们的系统日志,这些日志是在本地机器时区打印的。
示例: Mon Apr 03 00:50:15 CST 2017
实际上我并不关心他们的时区,我需要在我的应用程序中仅打印当地时间,因此我的应用程序端的打印输出必须是: 2017-04-03 00:50:15 < /强>
如何转换给定日期而不关心他们的时区或我的本地服务器时区,或者不必在我的应用中设置 date_default_timezone_set ? 是否有任何PHP功能呢?
我希望尽可能避免使用字符串操作。
提前谢谢。
BR //ģ
答案 0 :(得分:1)
好吧,对于所有与时间相关的操作,PHP希望您设置default
时区(否则会给出警告)。但是,我认为您只是在寻找格式化操作。
<?php
date_default_timezone_set("UTC");
$source = "Mon Apr 03 00:50:15 CST 2017";
$dateOb = new DateTime($source);
print_r($dateOb);
echo $dateOb->format("Y-m-d H:i:s");
输出:
DateTime Object
(
[date] => 2017-04-03 00:50:15.000000
[timezone_type] => 2
[timezone] => CST
)
2017-04-03 00:50:15
答案 1 :(得分:0)
如果您只想格式化日期,则可以使用date_format
。
$date=date_create("Mon Apr 03 00:50:15 CST 2017");
echo date_format($date,"Y-m-d H:i:s");
答案 2 :(得分:0)
您需要通过使用date_default_timezone_set('parameter');
设置时区标识符,将所需的时区设置为所有日期/时间功能。在http://php.net/manual/en/timezones.php找到支持的时区列表。然后使用date_default_timezone_get();
获取您指定的时区
<?php
date_default_timezone_set('Asia/Manila');
date_default_timezone_get();
echo date('Y-m-d H:i:s') ;
?>