【问题标题】:Laravel 5 timestamp not update right timeLaravel 5时间戳没有更新正确的时间
【发布时间】:2015-07-30 15:47:08
【问题描述】:

在将记录插入数据库后,created_at 时间戳未显示正确时间,它从服务器晚了 2 小时......另外如果我输入 mysql SELECT NOW() 它显示正确时间,知道有什么问题吗?

编辑..

它取自 Carbon 类的日期...知道如何更改它吗?

【问题讨论】:

  • 我怀疑时区在这里起作用。
  • 我现在看到它取自 Carbon 类的日期...知道如何更改它吗?
  • 你为什么要改变它?这是正确的日期。 MySQL TIMESTAMP 字段允许根据您的 MySQL 会话的时区转换到任何时区。您可以在 config/app.php 文件中更改应用的时区。
  • 我需要与服务器同步可以吗?
  • 执行 SELECT @@system_time_zone; 并将您的 Laravel 时区设置为相同。

标签: mysql timestamp laravel-5


【解决方案1】:

laravel 默认的timezone 是UTC,它位于config/app.php 文件中。

如果您想将timezone 更改为首选timezone,请从this list 或this list 中选择首选timezone,并将UTC 替换为您选择的时区。

一些笔记。根据comments here,准确地说,最后 3 个 cmets:您不应更改默认值。

在同一个数据源中存储不同timezones的日期 应用程序(通过更改当前用户的配置中的timezone & 让 Laravel 从那里开始处理它)只是自找麻烦& 是一个糟糕的设计。您将失去数据完整性。当一个 用户更改timezone?您将更新数据库中的所有日期 那个用户?

将所有用户的日期存储为 UTC(或您的任何其他时区) 选择,只需选择一个并坚持下去)。 Laravel 已经使用 优秀的Carbon library,用它来转换你的日期 timezone(它们存储在数据库中)到用户的timezone(其中 当您显示 日期。

【讨论】:

    【解决方案2】:

    对于更改配置文件后仍然有错误日期/时间的其他人:

    我的问题出在我的 vagrant box (Homestead) 中的 php 中。

    我解决了这个问题:

    首先 ssh 进入你的 vagrant box,然后在命令行中运行它:

    date
    

    这应该返回类似“Mon Jul 3 13:48:52 CEST 2017”的内容。检查此日期/时间是否正确。如果没有,请执行以下操作:

    sudo ntpdate -b pool.ntp.org
    

    这应该会更新您的系统时间。使用第一个命令再次检查它。如果仍然没有写入,您可能必须更改系统时区。你可以通过运行来做到这一点:

    sudo rm -f /etc/localtime
    
    sudo ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime 
    

    您可以使用任何您想要的时区,我更喜欢“欧洲/阿姆斯特丹”。

    可以获取其他时区here

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多