您需要找到服务器和用户之间的时区差异。为此,您需要使用 javascript 和 jquery。
我们将使用 jquery 获取时区偏移并将其存储在会话中。在将用户的日期插入数据库之前,我们将添加此偏移量。
查看getTimezoneOffset (javascript)
第 1 步:如果发布时区偏移量,请将其存储在 user_timezone isset 中。
第二步:如果没有设置user_timezone,则获取。
第 3 步:将此偏移量添加到用户选择的日期。然后将其插入数据库。
让我们创建一个新的 php 文件。并在让用户选择日期之前包含它。
<?php
if (!isset($_SESSION)) {
session_start();
}
//If timezone_offset is posted, save it as user_timezone
if (isset($_POST['timezone_offset'])) {
$_SESSION['user_timezone'] = $_POST['timezone_offset'];
}
//If user_timezone is not exist, get it.
else if (!isset($_SESSION['user_timezone'])) {
?>
//Include jQuery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var url = location.href;
var timezone_offset = new Date().getTimezoneOffset();
var posting = $.post( url, { timezone_offset: timezone_offset } );
posting.done(function() {
location.reload();
});
});
</script>
<?php
}
?>
我们得到了偏移量。现在让我们将此偏移量添加到日期。
$dt = $request->pickup_date_time;
$Fdate = strtotime($dt) + (60 * $_SESSION['user_timezone']);
现在,您可以将 $Fdate 插入数据库。
用于在本地时区显示此日期:
$Fdate = $Fdate - (60 * $_SESSION['user_timezone']);
$formattedDt = date('Y-m-d H:i:s', $Fdate);
对不起,我的英语不是我的母语。