【发布时间】:2013-06-09 11:56:37
【问题描述】:
我在格式化的日期时间字符串上调用strtotime(),由于某种原因它总是返回NOW()...
如果我的格式化日期时间字符串(存储在last_seen 属性中)是:2013-06-13 07:13:04
我写了以下代码:
echo $user->last_seen;
echo date('F j, Y', strtotime($user->last_seen));
我得到的输出是:
NOW() January 1, 1970
这里到底出了什么问题???这绝对不是预期的结果。字符串存储在 MySQL 数据库中,如果这有什么不同的话。
编辑:请求,用于在数据库中创建属性的代码是:
$user->last_seen = date('Y-m-d H:i:s');
$user->save;
编辑2:根据请求,用于拉取用户表的代码,以及我们想要的用户,是:
$user = User::find($user_id);
(不是很有帮助,哈哈)。
编辑3:如果我var_dump($user->last_seen),结果是:
object(Laravel\Database\Expression)#40 (1) { ["value":protected]=> string(5) "NOW()" }
编辑4:如果我回显var_dump(strtotime($user->last_seen)),结果是:
bool(false)
编辑5:这个问题是我是个白痴造成的,但是发帖的每个人都做了一些很好的调试。如果您有兴趣,请阅读答案。
【问题讨论】:
-
你从哪里得到对象
$user?负责设置的代码是什么样的字段last_seen? -
$user对象是使用 MVC 框架中的对象关系映射器 (ORM) 从数据库中提取的。我将使用用于设置它的代码编辑帖子。 -
显然您已将字符串 'NOW()' 存储在数据库中而不是日期中,并且您从 $user->last_seen 获取该字符串
-
@nos 当我检查数据库时,奇怪的是它显示了正确的字符串,而不是
NOW()。如果重要的话,该属性是datetime。 -
什么是`$user->last_seen`?回显出来,我想你会发现它是 Now()