【发布时间】: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