当计算两个日期之间的时间时,意外(负时间)- php和mysql



我想获得当前日期和某些日期之间的秒差,该日期存储在数据库中为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;

来源:

  1. date()函数
  2. strtotime() function
  3. <
  4. 方法来源/gh>
演示

相关内容

  • 没有找到相关文章

最新更新