【问题标题】:timestamps() for different region in laravel?laravel 中不同区域的时间戳()?
【发布时间】:2014-11-07 13:09:38
【问题描述】:

我想知道我是否可以将 IST 用于我的 laravel 应用程序,因为我的应用程序用于该区域,默认 timestamps() 值不起作用?如何处理?还是不可能做到这一点?

【问题讨论】:

  • 对不起,我对时区没有太多经验,但我希望那个时间在 IST 中,以前我曾经在代码点火器中将其转换为 IST,但我不知道如何在 laravel 中做同样的事情
  • 好吧,不要听我的建议……在内部使用日期/时间信息作为 UTC。当用户输入位于不同的时区时(例如,通过提交不带时区的日期隐含地),将其转换为 UTC。如果您需要以本地时间显示日期,请将其从 UTC 转换为该时间。这将为您省去很多麻烦。

标签: php laravel timestamp


【解决方案1】:

@lxg 是正确的:将您的时间以 UTC 格式存储在您的数据库中。这样做可以更轻松地转换您的时间与您需要的不同时区,而不必担心诸如是否应应用夏令时之类的事情。

要转换它们,只需将accessors 添加到您的模型中,以便在访问数据时自动更改您的数据:

// app/models/SomeModel.php
public function getCreatedAtAttribute($value)
{
    return Carbon::createFromTimestamp(strtotime($value))
        ->timezone('Asia/Mumbai')
        ->toDateTimeString()
    ;
}

这允许你做几件事:

  1. 无需更改您当前存储的任何数据即可轻松更改时区
  2. 您可以引入逻辑来确定要转换到哪个时区,而不是对其进行硬编码(例如,如果您存储用户特定的时区,您将能够轻松地以当地时区显示时间信息)。

这些当然只是您在以 UTC 存储时间时获得的subset of the benefits

【讨论】:

    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 2012-02-04
    • 2016-12-16
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多