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

时间:2016-06-13 06:43:49

标签: php laravel laravel-5.2 php-carbon

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

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

JAVA_HOME

我们想要做的是;

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

这就是我们目前正在做的事情。但是,我们认为它不起作用。

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

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

1 个答案:

答案 0 :(得分:2)

听起来你正试图做一个"顺序时区发布",在24小时内,它在某个地方的午夜。

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

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);
    }

这种方式只要&#34;午夜&#34;在通过时区时,"published_at"的值将小于&#34;小于&#34;当前时间戳,包括在结果中。