2015-06-18 135 views
0

当用户首次创建其帐户时,它默认将当前时间戳放入时间戳类型“日期”字段中。从当前时间戳获取日期时间默认

如果字段类型是“datetime”,它不会允许我将当前日期时间设置为默认值。我只能用“时间戳”来做到这一点。

但现在我需要使用需要日期时间格式的date_diff()。有没有办法将时间戳结果转换为日期时间,所以我可以把它放入date_diff?

我可以手动返回到创建新帐户的每个页面,并使其找到当前日期,然后将其放入日期时间字段,但这显然是更多的工作(我会这样做,如果必要)。

没有任何代码可以显示。这里就是我从数据库中的值(函数发送查询“SELECT日期从USER_LOGIN其中username = $用户名”):

$udate = get_value("user_login", "date", "username", $_SESSION['user']['username']); 

返回的值是datetime格式的日期和时间,但没有。所以,当我尝试以下方法:

date_diff($udate, date(Ymd), true); 

它给人的错误

date_diff()预计参数1是DATETIME,串给出

+0

显示一些代码? – Alex

+0

或者换个说法,你如何将“2015-06-17 12:38:54”转换为可以和date_diff()一起使用的日期时间值? – thinkofacard

+0

也许[strtotime](http://php.net/manual/en/function.strtotime.php) – Alex

回答

0

它不会让我如果字段类型为“datetime”,则将当前日期时间设置为默认值。我只能用“时间戳”来做到这一点。

MySQL将允许您指定一个DATETIME的字段,默认值为NOW()。这将由MySQL翻译为CURRENT_TIMESTAMP

然后,当创建用户时,MySQL会自动将CURRENT_TIMESTAMP插入date字段。

MySQL Date and Time Functions NOW()


编辑:

它看起来像你的问题是与date_diff本身。您必须提供前两个参数,类型DateTime,但您的MySQL数据库中的时间戳记表示是string。创建一个DateTime对象并将其作为参数传递:

$udate = new DateTime(get_value("user_login", "date", "username", $_SESSION['user']['username'])); 
$now = new DateTime(); 

$diff = date_diff($udate, $now, true); 

// Will spit out difference in days 
echo $diff->format('%d days');