0
$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 h 时区 = 服务器时间。

如何将确切的日期和时间(明天 9:00)显示为用户的,而不是系统的?

4

1 回答 1

0

您可以使用以下解决方案:

// frontend
<script> timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; </script>

这将为您提供浏览器的时区timezone。您需要将其传递给后端并使用它来调整用户的时间。下面,timezone上面的值已经存储在$timezone.

// backend
$time = new \DateTime('now');
$time->setTimezone(new \DateTimeZone($timezone));
于 2018-08-16T14:03:35.097 回答