gpt4 book ai didi

php - 从 UTC 获取按本地时区过滤的数据

转载 作者:行者123 更新时间:2023-12-04 03:27:54 24 4
gpt4 key购买 nike

我们在 Laravel 5.2 中有一个应用程序。在我们的数据库中,published_at 将日期存储在时间戳中,carbon 实例以 UTC 格式存储,就像 created_at 和 updated_at 一样。

每个帖子都应该在每个时区的午夜发布。我们以 UTC 格式保存日期数据,例如

'published_at' => '2016-04-12 00:00:00'

我们要做的就是喜欢;

如果美国的人查看它,那么他/她会在他/她的午夜时间后看到该帖子。如果中国人查看它,那么他/她会在午夜后看到该帖子。我们怎样才能做到这一点?

这就是我们目前正在做的事情。但是,我们认为这行不通。

    public function all($limit, array $data = [])
{
$posts = $this->post->with('categories')
->where(
'published_at', Carbon::now()->setTimezone($data['user_timezone'])
->format('Y-m-d 00:00:00')
)
->orderBy('published_at', 'ASC')
->paginate($limit);
}

这是我们第一次在时区工作,我们不知道。任何帮助将不胜感激。谢谢。

最佳答案

听起来您正在尝试执行“顺序时区发布”,在 24 小时的过程中,某个地方是午夜。

假设您已经从某个地方(在 $data 中?)的输入中获取了时区,您可以使用标准的 Eloquent/Laravel 查询生成器措辞来构建您需要的查询:

https://laravel.com/api/master/Illuminate/Database/Query/Builder.html

    public function all($limit, array $data = [])
{
$posts = $this->post->with('categories')
->where(
'published_at',
'<',
Carbon::now($data['user_timezone'])
->format('Y-m-d H:i:s')
)
->orderBy('published_at', 'ASC')
->paginate($limit);
}

这样,一旦“午夜”在所经过的时区发生,“published_at” 的值将“小于”当前时间戳,并将其包含在结果中。

关于php - 从 UTC 获取按本地时区过滤的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783287/

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