我想获得当前日期和某些日期之间的秒差,该日期存储在数据库中为DATETIME
类型。我用这个函数得到这个日期:
function get_date_last_action($username)
{
$id = $this->get_username_id($username);
$query = "SELECT date_last_action".
"FROM user".
"WHERE user.id ='" . $id . "'";
$result = mysql_query($query);
$date_last_action = mysql_fetch_array($result);
return $date_last_action[0];
}
在另一段代码中,我调用这个函数:
$date = $h_db_functions->get_date_last_action("user1");
$currentTime = time();
$timeInPast = strtotime($date);
$differenceInSeconds = $currentTime - $timeInPast;
奇怪的是,我得到了一个负值
如果你对"现在-那时"的回答是否定的,那么"那时"就是未来。
请输入echo $date
确认。
如果差异相当小,则意味着数据库和PHP进程没有使用相同的时区。确保PHP中的date_default_timezone_set
和MySQL中的SET time_zone = ...
设置为相同的标识符。
使用这种方法:
$timeFirst = strtotime('2014-04-15 18:20:20');
$timeSecond = strtotime('2014-04-11 18:20:20');
$differenceInSeconds = $timeSecond - $timeFirst;
注意:一定要使用正确的参数来执行函数。
在你的例子中:
$currentTime = time();
$timeInPast = strtotime($date); // date should be in YYYY-DD-MM HH:MM:SS format
$result = $currentTime - $timeInPast;
来源:
-
date()
函数 -
strtotime()
function < - 方法来源/gh>