PHP:将此时区的星期一转换为UTC


PHP: Convert monday in this timezone to UTC

我正在构建一个应用程序,它可以获取用户"本周"(在他们的时区)所做的所有条目。我使用将数据库中的所有输入时间存储为UTC/GMT时间

gmdate('U')

当我需要在他们的时区获取"本周"时,我的问题就出现了。在我考虑时区之前,我使用。。。

$startWeek = strtotime('monday this week 00:00')
$endWeek = strtotime('sunday this week 00:00')

并使用SQL语句搜索这两个变量之间的关系。

问题是,这两个变量使用的是服务器时间,所以它给出了服务器一周的开始和结束时间。

如果需要,我可以在cookie中访问用户时区(即:澳大利亚/墨尔本)。

最重要的是,我如何在我存储在cookie中的时区中以时间戳格式获取一周的开始和结束?

我认为date_default_timezone_set功能符合您的要求:

http://www.php.net/manual/en/function.date-default-timezone-set.php

你需要从用户那里获得时区,然后用它调用函数

date_default_timezone_set('Melbourne/Australia');

如果你有一个中途的PHP安装,这将完成:

$usersTimezone = new DateTimeZone($timezone); // e.g. "Australia/Melbourne"
$time = new DateTime('monday this week 00:00', $usersTimezone);
$serversTimezone = new DateTimeZone('Servers Timezone'); // e.g. "UTC"
$time->setTimezone($serversTimezone);
$sqlTime = $time->format('Y-m-d H:i:s');