如何在PHP中获得以秒为单位的时间差?

如何在PHP中获得以秒为单位的时间差?,php,time,Php,Time,我有一个数据类型为“time”的数据库列,它存储11:30:45。这一次我用一个变量表示 $databasetime = 11:30:45 我想声明一个变量,比如说$currenttime,它现在将包含时间。比如现在的11:33:30和另一个变量,它将包含它们的秒差,比如 $timediff = $currenttime - $databasetime; echo $timediff; 我正在尝试$currenttime=time()diff($datetime2); echo$interv

我有一个数据类型为“time”的数据库列,它存储11:30:45。这一次我用一个变量表示

$databasetime = 11:30:45
我想声明一个变量,比如说
$currenttime
,它现在将包含时间。比如现在的11:33:30和另一个变量,它将包含它们的秒差,比如

$timediff = $currenttime - $databasetime;
echo $timediff;
我正在尝试
$currenttime=time()$timediff=165
但是当我回显time()时,我得到了一个非常大的值。


<?php
$currentTime = time();
$futureDateTime = new DateTime('11:30:45'); // might want to specify a date and timezone, system TZ by default
$futureTime = $futureDateTime->format('U'); // get unix timestamp
$timeDiff = $futureTime-$currentTime;
?>

您可以通过以下方式完成:

$databasetime = '11:30:45';
$time1 = strtotime($databasetime);
$time2 = strtotime('now');
$diff = $time2 - $time1;
echo 'your difference: '.date('H:i:s', $diff);

您可以通过以下方式执行此操作:

$databasetime = '11:30:45';
$time1 = strtotime($databasetime);
$time2 = strtotime('now');
$diff = $time2 - $time1;
echo 'your difference: '.date('H:i:s', $diff);
$datetime1=新日期时间('10:35:56 2013-11-17');
$datetime2=新日期时间('10:35:50 2013-11-17');
$interval=$datetime1->diff($datetime2);
echo$interval->m。“月”。$interval->d.“天”$间隔->h。“小时,”$间隔->i.“分钟数”,.$interval->s.“秒数
”;
$datetime1=新的日期时间('10:35:56 2013-11-17');
$datetime2=新日期时间('10:35:50 2013-11-17');
$interval=$datetime1->diff($datetime2);
echo$interval->m。“月”。$interval->d.“天”$间隔->h。“小时,”$间隔->i.“分钟数”,.$interval->s.“秒数
”;
下面是一个简单的例子

$databasetime = '11:30:45';
$timedif = abs(strtotime('now') - strtotime($databasetime));
echo $timedif; //echos the difference in seconds.

abs
仅用于防止出现负数,您可能不想这样做。

下面是一个简单的示例

$databasetime = '11:30:45';
$timedif = abs(strtotime('now') - strtotime($databasetime));
echo $timedif; //echos the difference in seconds.

abs
仅用于防止出现负数,您可能不想这样做。

您可以使用DateTime“OO”方法直接返回“unix timestamp”整数

<?php
$now = new DateTime('now');
$date = new DateTime('11:30:45');
echo $now->getTimestamp() - $date->getTimestamp();
?>

您可以使用DateTime“OO”方法直接返回“unix timestamp”整数

<?php
$now = new DateTime('now');
$date = new DateTime('11:30:45');
echo $now->getTimestamp() - $date->getTimestamp();
?>

我的问题现在解决了。事实上,所有答案都是正确的,但问题是由于默认时区。我想要亚洲/加尔各答时区,但阿帕奇选择了默认的欧洲时区。这就是为什么我没有得到我想要的结果

因此,我最终使用以下代码:

date_default_timezone_set('Asia/Kolkata');
$databasetime = strtotime('11:30:45');
$curtime      = time();
echo $curtime - $databasetime;

我的问题现在解决了。事实上,所有答案都是正确的,但问题是由于默认时区。我想要亚洲/加尔各答时区,但阿帕奇选择了默认的欧洲时区。这就是为什么我没有得到我想要的结果

因此,我最终使用以下代码:

date_default_timezone_set('Asia/Kolkata');
$databasetime = strtotime('11:30:45');
$curtime      = time();
echo $curtime - $databasetime;

@hocat-我现在没有得到-ve值,但差异太大了。我只是试着不去做,得到了19755秒的时差。但实际差异约为2-3分钟。@hocat-PHP是从机器时间还是从其他地方选择now(),因为我给$databasetime的时间比现在少2-3分钟。@nkp不幸的是,问题通常是时区设置,如果延迟一小时或更长时间,可能会延迟。您正在运行什么版本的php?PHP5.3.2-1有一个类似的功能。如果你需要一个临时解决方案的坏主意,这样你就可以继续开发,你可以做一些像
strotime('now-5hours')
。不,我需要永久的解决方案。我正在使用echo abs(strotime('now')-strotime('21:16:00'));我机器上的当前时间是21:17,我的时差是19615,而不是60左右。@nkp必须是时区问题。您可以运行'echo date\u default\u timezone\u get()'查看您的时区设置。@hocat-我现在没有得到-ve值,但差异太大了。我只是试着不去做,得到了19755秒的时差。但实际差异约为2-3分钟。@hocat-PHP是从机器时间还是从其他地方选择now(),因为我给$databasetime的时间比现在少2-3分钟。@nkp不幸的是,问题通常是时区设置,如果延迟一小时或更长时间,可能会延迟。您正在运行什么版本的php?PHP5.3.2-1有一个类似的功能。如果你需要一个临时解决方案的坏主意,这样你就可以继续开发,你可以做一些像
strotime('now-5hours')
。不,我需要永久的解决方案。我正在使用echo abs(strotime('now')-strotime('21:16:00'));我机器上的当前时间是21:17,我的时差是19615,而不是60左右。@nkp必须是时区问题。您可以运行'echo date\u default\u timezone\u get()'查看您的时区设置。它不起作用。以千为单位给出-ve值,-19541是错误的。它可能是服务器上的时区,而不是数据库中存储的时区。尝试添加日期\默认\时区\集合(“美国/洛杉矶”);或者你使用的任何有效时区。它不起作用。以千为单位给出-ve值,-19541是错误的。它可能是服务器上的时区,而不是数据库中存储的时区。尝试添加日期\默认\时区\集合(“美国/洛杉矶”);或者你使用的任何有效时区。不工作。我的系统的当前时间是21:25。当我设置$databasetime='21:24:00'时,我得到的是18:32:35的差值。我不知道它是如何计算的?如果您将回显$time1和$time2,您会看到什么?不工作。我的系统的当前时间是21:25。当我设置$databasetime='21:24:00'时,我得到的是18:32:35的差值。我不知道它是如何计算的?如果您将回显$time1和$time2,您会看到什么?