【问题标题】:Current timestamp in PHP and MySQLPHP 和 MySQL 中的当前时间戳
【发布时间】:2011-08-02 22:25:41
【问题描述】:

我正在使用 PHP 使用 time() 打印当前时间戳,并且我有一个存储日期的 MySQL 列,我正在使用 strtotime() 将其转换为时间戳。但是,当我打印转换后的值时,它们之间存在一小时的差异。真正的区别在于几秒钟。怎么了?

【问题讨论】:

  • PHP 中的时区设置是什么,MySQL 中的时区设置是什么?有你的答案。
  • 打赌你正在运行命令的服务器(或 mysql 配置)要休息一个小时。
  • @Wrikken:如果您将其发布为答案,本可以为您赢得至少 10 分。

标签: php mysql timestamp


【解决方案1】:

假设它们都在同一台物理服务器上运行,则可能是时区不匹配。

您可以通过在 MySQL 控制台中运行以下查询来检查 MySQL 服务器上的时区:

SELECT @@global.time_zone;

然后在您的 PHP 页面上运行以下脚本:

echo date_default_timezone_get();

一旦你确定哪一个是错误的,你应该可以通过编辑 my.cnf 或 php.ini 来解决这个问题。

您还可以使用date_default_timezone_set() 在运行时更改默认时区。

【讨论】:

    【解决方案2】:

    Set your timezone 在插入您的时间之前

    date_default_timezone_set('America/Los_Angeles'); // Whatever your timezone is
    
    mysql_query("INSERT
                INTO table
                (date)
                VALUES
                (" . time() . ")") or die(mysql_error());
    

    【讨论】:

      【解决方案3】:

      您可能想要使用 PHP strftime 函数,因为它确实考虑了本地时区。您可能会遇到夏令时问题。

      【讨论】:

        【解决方案4】:

        使用MySQL的UNIX_TIMESTAMP()函数获取当前epoch时间:

        INSERT INTO mytable SET tstamp = UNIX_TIMESTAMP();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-24
          • 1970-01-01
          • 2011-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-02
          相关资源
          最近更新 更多