我将MySQL中的表更改为时间戳,以便我可以看到创建用户的时间:
ALTER TABLE `users` CHANGE `created_date` `created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
使用CodeIgniter我查询了数据库并获得了所有用户的行结果:
$this->db->get('users');
在我看来,我试图使用PHP date()显示结果:
<?php echo date("d-m-Y", $row->created_date); ?>
我收到此错误消息,我不明白:
Severity: Notice
Message: A non well formed numeric value encountered
Filename: users/view_all_users.php
Line Number: 19
本身:
<?php echo $row->created_date ?>
产生
01-01-1970 0000-00-00 00:00:00
任何想法我做错了什么?
答案 0 :(得分:3)
date()
的第二个参数必须是valid time stamp。 01-01-1970 0000-00-00 00:00:00
不是有效的时间戳。
$arr = explode(' ',$row->created_date);
$date = $arr[1] . ' ' . $arr[2];
echo date("d-m-Y", strtotime($date));
请注意,此字符串:01-01-1970 0000-00-00 00:00:00
可能表示您字段中的值错误,但此字符串:1970-01-01 00:00:00
适用于strtotime()
编辑我有一种怪异的感觉,你确定完整的字符串是由第二个回声输出,还是你的两个回声发生,因此模仿一个无效的字符串?在这种情况下:
echo date("d-m-Y", strtotime($row->created_date));
会马上工作!
答案 1 :(得分:0)
当您使用TIMESTAMP数据类型时,MySQL会返回繁琐的字符串。您可以将其转换为您在查询中期望的Unix值:
SELECT UNIX_TIMESTAMP(`created_date`)...
(并在保存时将时间戳转换为字符串)
或者您只需在数据库中使用整数数据类型并绕过所有字符串业务。