gpt4 book ai didi

php - 在 PHP 和 MySQL 中设置时区

转载 作者:IT老高 更新时间:2023-10-28 23:52:12 27 4
gpt4 key购买 nike

我正在制作一个应用程序,我需要使用 PHP date() 函数将日期存储在 MySQL 中。

<?php $finalize_at = date('Y-m-d H:i:s'); ?>

这些日期需要在 MySQL 中使用 NOW() 函数进行比较,以返回小时差,例如:

SELECT TIMESTAMPDIFF( hour, NOW(), finalize_at ) FROM plans;

但问题是 - PHP 日期函数 date('Y-m-d H:i:s') 使用 PHP 时区设置,而 NOW() 函数需要来自 MySQL 服务器的 MySQL 时区。

我正在尝试解决这个问题:

  1. date_default_timezone_set('Europe/Paris'); 仅适用于 PHP。
  2. date.timezone= "Europe/Paris"; 仅适用于 PHP。
  3. SELECT CONVERT_TZ(now(), 'GMT', 'MET'); 这个返回空。
  4. mysql> SET time_zone = 'Europe/Paris'; 这会从 MySQL 控制台抛出错误。

MySQL 的时区不会改变。

有没有什么方法可以更改 PHP 和 MySQL 的时区,而无需从 MySQL 控制台进行更改,或者从 php.ini 中的某处设置时区更改,并使这些值可用于PHP 和 MySQL。

非常感谢您的支持。

最佳答案

在 PHP 中:

<?php
define('TIMEZONE', 'Europe/Paris');
date_default_timezone_set(TIMEZONE);

对于 MySQL:

<?php
$now = new DateTime();
$mins = $now->getOffset() / 60;
$sgn = ($mins < 0 ? -1 : 1);
$mins = abs($mins);
$hrs = floor($mins / 60);
$mins -= $hrs * 60;
$offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);

//Your DB Connection - sample
$db = new PDO('mysql:host=localhost;dbname=test', 'dbuser', 'dbpassword');
$db->exec("SET time_zone='$offset';");

PHP 和 MySQL 时区现在在您的应用程序中同步。无需使用 php.ini 或 MySQL 控制台!

这是来自 article on SitePoint .

关于php - 在 PHP 和 MySQL 中设置时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com