【问题标题】:PHP: Can't Convert MySQL DateTime to Epoch (with Correct Time of Day)PHP:无法将 MySQL 日期时间转换为纪元(使用正确的时间)
【发布时间】:2012-06-06 00:10:11
【问题描述】:

我正在使用 php 从 MySQL 数据库中获取日期时间。

在 mysql 中,日期时间如下所示:

'2004-11-03 06:29:48'

我从数据库中获取日期时间的代码行如下所示:

$epochTime = strtotime($row[8]);

php 的 strtotime 函数将这个时间转换为错误的纪元时间:

1099461600

这是不正确的。如果您使用http://www.epochconverter.com/ 将其转换回来,您会看到最初在 mysql 中的时间已经丢失:

格林威治标准时间 2004 年 11 月 3 日星期三 06:00:00

我怎样才能得到一个准确的纪元时间,它的特异性与 mysql 的日期时间相匹配?

编辑:

我刚刚发现mysql只返回日期(没有时间):

2004/11/03

我试图用这个来强制它返回时间:

select DATE_FORMAT(`FieldDateTime`,'%Y-%m-%d %k:%I:%s') from table where id=1;

但这也不起作用;它继续只返回日期(没有时间)。

确认!我想到了。我在数组中指定了错误的字段:

$epochTime = strtotime($row[8]);

应该是:

$epochTime = strtotime($row[9]);

原来$row[8] 也是一个格式化的日期字段,这引起了我的困惑。感谢您的帮助!

【问题讨论】:

  • codepad.viper-7.com/RFHhWL 它对我有用。我认为从数据库中提取日期时存在问题,也许它会在空格字符处中断。您可以尝试回显 $row[8] 变量吗?
  • 您的查询是什么样的?当我运行$epochTime = strtotime('2004-11-03 06:29:48'); echo $epochTime; 时,我收到了正确的1099484988 值。
  • @Andy 我得到1099463388 你评论中的同一行。我怀疑语言环境设置会影响结果。
  • 您运行的是哪个版本的 PHP?你设置了哪个时区?
  • @Andy 转换'2004-11-03 06:29:48 GMT' 得到我得到的结果,转换'2004-11-03 06:29:48 CST' 得到你得到的结果。

标签: php mysql php-5.3 strtotime epoch


【解决方案1】:

你可以试试:

SELECT UNIX_TIMESTAMP(`timestamp_column_name`) AS `timestamp`;

然后在 PHP 中:

echo date("Y-m-d H:i:s", $row['timestamp']);

这是否与 MySQL 匹配?

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 2012-11-08
    • 2014-08-28
    • 2012-09-06
    • 2020-02-22
    • 2019-06-19
    • 2018-04-24
    • 2011-12-06
    • 2020-02-21
    相关资源
    最近更新 更多