总结一下就是我的代码:
echo @date('h:i A e', @strtotime($db_order_data['DeliveryDate'])); ?> on <?= @date('d M Y', @strtotime($db_order_data['DeliveryDate']));
如何更改特定交货日期的时区?
注意:我试图在最顶层的php上添加define('TIMEZONE', 'Pacific/Taipei');
,但仍然无法正常工作。任何帮助将不胜感激。谢谢。
编辑:时间本身就是我需要更改的时间。包括时区。对不起,我的英语不好。
答案 0 :(得分:0)
strtotime()
将采用PHP的默认时区(通过php.ini或date_default_timezone_set()
设置)。
在运行时为此设置全局设置并不是真正的最佳实践。为此,最好使用DateTime类。
$dt = new \DateTime($db_order_data['DeliveryDate'], new \DateTimeZone('Pacific/Taipei'));
echo $dt->format('h:i A e') . " on " . $dt->format('d M Y');
答案 1 :(得分:0)
要执行此操作,可以使用DateTime
对象,首先使用数据库值的时区(如果是MySQL,则可能是UTC)创建该对象,然后调整结果的时区。
$date = new DateTime($db_order_data['DeliveryDate'], new DateTimeZone('America/Chicago'));
$date->setTimeZone(new DateTimeZone('Asia/Taipei'));
echo $date->format('h:i A e') . " on " . $date->format('d M Y');
请注意,Pacific/Taipei
对PHP无效,您需要使用Asia/Taipei
。
例如,如果为$db_order_data['DeliveryDate'] = '2019-04-29 14:30:00';
,则输出为:
03:30 AM Asia/Taipei on 30 Apr 2019