关于php:lastvel中不同地区的timestamps()?

timestamps() for different region in laravel?

我想知道我是否可以将IST用于我的laravel应用程序,因为我的应用程序是针对该区域的默认时间戳()值不起作用? 怎么接近? 或者这样做不可能吗?


@lxg是正确的:将您的时间以UTC格式存储在数据库中。 这样做可以更轻松地根据需要将时间转换为不同的时区,而不必担心是否应该应用夏令时等问题。

要转换它们,只需向模型添加访问器,以便在访问时自动更改数据:

1
2
3
4
5
6
7
8
// app/models/SomeModel.php
public function getCreatedAtAttribute($value)
{
    return Carbon::createFromTimestamp(strtotime($value))
        ->timezone('Asia/Mumbai')
        ->toDateTimeString()
    ;
}

这允许您做一些事情:

  • 在不更改当前存储的任何数据的情况下更改时区将非常容易
  • 您可以引入逻辑来确定要转换为的时区而不是硬编码(例如,如果存储用户特定的时区,您将能够轻松地在其本地时区显示时间信息)。
  • 当然,这些只是以UTC格式存储时间所带来的好处的一部分。