我们在Laravel 5.2中有一个应用程序。在我们的数据库中,published_at以UTC格式的碳实例存储日期时间戳,就像created_at和updated_at一样。
每个帖子应该在每个时区的午夜发布。我们以UTC格式保存了日期数据,如
JAVA_HOME
我们想要做的是;
如果美国有人看到它,那么他/她在午夜时间之后会看到该帖子。如果一个中国人看到它,那么他/她在他/她的午夜时间之后看到那个帖子。我们怎样才能做到这一点?
这就是我们目前正在做的事情。但是,我们认为它不起作用。
'published_at' => '2016-04-12 00:00:00'
这是我们第一次在时区工作,我们不知道。任何帮助将不胜感激。谢谢。
答案 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;当前时间戳,包括在结果中。