我将从PHP脚本发送的MySQL中的时间存储为CURRENT_TIMESTAMP
。这使得时间从错误的时区开始,距离我不到1小时。我不是超级用户,所以SET GLOBAL time_zone = 'Europe/London';
将不起作用。无论如何我可以修改输入或输出查询以补偿1小时?
这是我当前的sql查询,从表单发送:
REPLACE INTO `order_admin_message` (`order_id`, `message`, `date_updated`)
VALUES ('$number', '$msg', CURRENT_TIMESTAMP)
然后我使用以下方式进行检索:
SELECT order_admin_message.message, order_admin_message.date_updated
FROM order_admin_message
WHERE order_admin_message.order_id = $number
编辑:要清楚,我不想显示用户的时间,只是显示当地的伦敦时间(夏季将夏令时考虑在内)。 编辑2:将主题更改为更接近问题/答案。
答案 0 :(得分:2)
在PHP中,只需更改它即可显示。不要在数据库中存储与语言环境相关的日期或时间。稍后进行转换,PITA。即使您不关心用户,也只需显示您需要的时间/时区。
$tz = new DateTimeZone('Europe/London');
$datetime_updated = new DateTime($results['order_admin_message.date_updated']);
$datetime_updated->setTimezone($tz);
$display_date = $datetime_updated->format("M j, Y g:i A");
echo $display_date;
答案 1 :(得分:0)
请改用utc_timestamp
,然后自行转换为用户的时区。
UTC_TIMESTAMP是当前的UTC日期和时间,正如全世界所认可的那样。
只要您知道用户的位置以及他的时区,您就可以通过添加正确的偏移来转换它。
如果您不知道用户所需的时区是什么,那么您有一个不同的问题 - 基本上您需要以某种方式找到它。
答案 2 :(得分:0)