【问题标题】:How can I echo out a timestamp pulled out from an SQL database table to be in the user's timezone?如何回显从 SQL 数据库表中提取到用户时区的时间戳?
【发布时间】:2015-07-28 20:00:08
【问题描述】:

我有用户通过在我的网站上提交表单创建的记录。当他们创建记录时,默认情况下还会创建一个时间戳来解释记录的创建时间。据我所知,它们都在 UTC/GMT 时间,比我的 EST 时区晚 4 小时。当我遍历记录以将它们回显到表中时,我希望时间戳显示用户登录的时间。有没有简单的方法可以通过更改时间戳的变量来解决这个问题?

【问题讨论】:

  • 您尝试设置默认时区?
  • SET time_zone = 'US/Eastern',根据您使用的是mysqli 还是PDO,其完成方式会有所不同

标签: php mysql datetime timestamp


【解决方案1】:

在 PHP 中:

date('Y-m-d H:i:s',strtotime('-4 hours',strtotime(TIME_FROM_DB)));

有关 date() 和 strtotime() 的更多信息,请参阅http://php.net/manual/de/

在 MYSQL 中:

 SELECT DATE_ADD(time_field, INTERVAL 31 DAY);

SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_adddate

希望有帮助

【讨论】:

    【解决方案2】:

    在 PHP 中使用 date_default_timezone_set('US/Eastern'); 会将代码的时区转换为该时区。

    当您在 SQL 查询中使用 NOW() 查询数据库(或在 PHP 中使用 $currentTime = date('Y-m-d H:i:s', time()); 并插入 $currentTime)时,它将插入上面定义的时区的时间。

    【讨论】:

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