PHP格式化日期时间不关心时区
我有不同时区的客户,我需要分析他们的系统日志,这些日志打印在他们的本地机器时区。PHP格式化日期时间不关心时区
例如:周一4月3日0点五十分15秒CST 2017年
其实我并不关心自己的时区,我需要在我的应用只是他们的本地时间打印,所以在我的打印输出应用程序端必须是:2017-04-03 00:50:15。
如何转换给定的日期而不关心他们的时区或我的本地服务器时区,或者不必在我的应用程序中设置date_default_timezone_set? 有没有任何PHP功能来做到这一点?
我想尽量避免使用字符串操作。
谢谢你提前。
BR // g^
那么,对于所有与时间相关的操作,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
你可以使用date_format
,如果你只是想格式化你的日期。
$date=date_create("Mon Apr 03 00:50:15 CST 2017");
echo date_format($date,"Y-m-d H:i:s");
它会给你警告:PHP警告:date_create():依靠系统的时区设置是不安全的。 – guete
你需要设置你想要的时区,通过使用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') ;
?>
太棒了!这个作品非常好!这是我正在寻找的。谢谢 ! :) – guete