gpt4 book ai didi

php - PHP Web 应用程序中的日期时间(时区)

转载 作者:行者123 更新时间:2023-11-29 04:57:56 25 4
gpt4 key购买 nike

我了解到我应该在本地时间存储 UTC 和显示。如何根据用户时间查询 SQL 数据库中今天到期的行。我有一个包含 dueOn 列的 Todo 表,它包含 int 中的 UTC Unix 时间戳。

我认为它看起来像

SELECT * FROM Todos 
WHERE dueOn BETWEEN {today's timestamp} AND {tomorrow's timestamp}

我将使用什么来获取今天和明天的时间戳?我认为这听起来很简单,但我对日期和时间的所有类似方法感到非常困惑

更新

我想知道像下面这样的事情是否正确

// set default timezone to the user's timezone
date_default_timezone_set("Asia/Singapore");
// get UTC datetime for today & tomorrow
$today = DateTime::createFromFormat('Y-m-d', date('Y-m-d'), new DateTimeZone('UTC'));
$tomorrow = clone($today);
$tomorrow->add(DateInterval::createFromDateString('1 day'));

$sql = 'SELECT * FROM Todos WHERE dueOn BETWEEN ' . $today->getTimestamp() . ' AND ' . $tomorrow->getTimestamp();
echo $sql;

我能否在不使用 date_default_timezone_set 的情况下以某种方式获取用户的时间?或者它会好吗,因为这只会为请求设置时区?

最佳答案

在您的 SQL 查询中,使用 CONVERT_TZ 将到期日期从用户时间转换为 UTC。

例如:

SELECT * FROM Todos
WHERE CONVERT_TZ('2011-01-21', 'EST', 'UTC') BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY)

关于php - PHP Web 应用程序中的日期时间(时区),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com