$dt = new DateTime('tomorrow 09:00:00');
echo $app->make('helper/form/date_time')->datetime('dt', $dt, false, true, null, 1800, array());
仅在系统服务器时间与用户的时间相同时显示正确的日期和时间。本地主机但是,如果服务器和用户位于不同的时区,则用户端的$ dt不再是这样。
我也尝试过:
$dt = $dh->formatDateTime(date("Y/m/d H:i:s"), false, false, 'user');
显示当前用户的日期和时间,但是一旦我在其中更改任何内容(例如添加日期或时间或其他任何内容,它就会回到服务器的日期时间)。
例如,上面显示了今天的17/08/18 1:00(现在是正确的用户时间),但是
$dt = $dh->formatDateTime(date("Y/m/d H:i:s", strtotime("tomorrow 9:00")), false, false, 'user');
显示18/08/18 1:00,这是9:00-10小时(时区=服务器时间)。
如何显示用户的确切日期和时间(明天9:00)而不是系统的确切日期和时间?
答案 0 :(得分:0)
您可以使用以下解决方案:
// frontend
<script> timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; </script>
这将为您提供timezone
中浏览器的时区。您需要将其传递给后端,并使用它为用户调整时间。下面,上面的timezone
的值已存储在$timezone
中。
// backend
$time = new \DateTime('now');
$time->setTimezone(new \DateTimeZone($timezone));