PHP重新格式化日期时间而不关心时区

时间:2017-05-05 03:25:01

标签: php date datetime timezone

我有来自不同时区的客户,我需要分析他们的系统日志,这些日志是在本地机器时区打印的。

示例: Mon Apr 03 00:50:15 CST 2017

实际上我并不关心他们的时区,我需要在我的应用程序中仅打印当地时间,因此我的应用程序端的打印输出必须是: 2017-04-03 00:50:15 < /强>

如何转换给定日期而不关心他们的时区或我的本地服务器时区,或​​者不必在我的应用中设置 date_default_timezone_set ? 是否有任何PHP功能呢?

我希望尽可能避免使用字符串操作。

提前谢谢。

BR //ģ

3 个答案:

答案 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') ;
?>