如何使用php将mysql插入时间转换为用户本地时间?

时间:2018-09-22 15:52:16

标签: php datetime

我想使用php在mysql中插入当前日期和时间。我不想在init.php中设置时区,因为这不是强制用户每次或一次设置时区的要求。

我正在这样做:

echo "Today is " . date("d/m/Y") . "<br>";
echo "Time is " . date("g:m a") . "<br>";
$sys_timestamp = strtotime(exec("date"));
echo sys_timestamp;

我已经尝试过NOW(),但是它也不能解决我的问题。 我也尝试过systime(),time()。

我正试图像下面这样修复,但是它弄乱了所有时间。

 date_default_timezone_set('Europe/Helsinki');
 $updated_date = date("d-m-Y");
 echo $updated_date;

 $updated_time = date("g:i a");
 echo $updated_time;

不是,我不想要以上解决方案。我想在整个网站的服务器上发送通用的日期和时间,并且当用户检查日期和时间时,我希望使用php将日期和时间自动转换为本地时间。将时间从mysql插入时间转换为用户位置的本地时间和日期。

请提出我的错。

2 个答案:

答案 0 :(得分:0)

这会将SQL会话的时区同步到当前设置为php的时区。否则,如果您只是更改php,则您的php会话和sql会话将在不同的时区运行。

date_default_timezone_set('Europe/Helsinki');

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$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);

$sql = "SET time_zone='".$offset."';"; 
$stmt = $conn->prepare($sql);
$stmt->execute();
$stmt->close();

答案 1 :(得分:0)

更改专栏
see this Sceenshot


当您将数据插入表中时,列也会自动填充当前日期和时间。