减去两个时间值时出现意外结果

时间:2011-07-30 18:17:38

标签: php symfony-1.4

这真的很奇怪。我有两个时间值。

第一次:

$t1 = 1311165885;

第二次(比第一次更大):

$t2 = 1312049530;

我要减去这样的时间:

$diff = $t2-$t1;

当我做echo $diff时,这就出现了:

echo 'Time_diff: ' . $diff; 
Time_diff: -1311163874

实际结果应为883645。有什么问题?

提前致谢!

Craphunter

然后这是我的代码:

<?php 
$current_time = DataConverter::makeDatetime();

foreach ($order as $list) {
    echo '-----------'.'</br>';
    $create_unix_time = DataConverter::makeTimestamp($list->getCreate());
    $diff = $current_time-$create_unix_time;

    if ($diff >= 864000) {
        echo 'aus db: ' .  $list->getErstellt() . '</br>';
        echo $list->getId() . '</br>';
        echo 'old';
    }
    else {
    }
}

?>

2 个答案:

答案 0 :(得分:3)

<?php

$t1 = 1311165885;
$t2 = 1312049530;
$diff = $t2-$t1;

echo 'Time 1: ' . date('Y-m-d H:i:s', $t1) . PHP_EOL;
echo 'Tim2 2: ' . date('Y-m-d H:i:s', $t2) . PHP_EOL;
echo 'Time diff: ' . $diff . PHP_EOL;

...打印出来:

Time 1: 2011-07-20 14:44:45
Tim2 2: 2011-07-30 20:12:10
Time diff: 883645

你说你得到的确看起来像一个普通的时间戳而不是差异:

echo date('Y-m-d H:i:s', 1311163874) . PHP_EOL;

...打印:

2011-07-20 14:11:14

您的代码中某处可能存在输入错误的变量名称。

答案 1 :(得分:0)

我忽略了DataConverter :: makeTimestamp方法的数据类型结果。也许这是一个错误的假设,假设结果是整数。也许。 但是,您可以强制数据类型为整数,并测试是否存在问题。

$current_time = intVal( DataConverter::makeDatetime() );

$create_unix_time = intVal( DataConverter::makeTimestamp( $list->getCreate() ) );