使用PHP中的UNIX时间戳计算时差


Calculate Time difference using UNIX time stamp in PHP

我有两个unix时间,一个是今天的日期,另一个是到期时间。

  • 今日时间:1377173245(2013-08-22 12:07:25)
  • 过期时间:1406303166(2014-07-25 15:46:06)

我想要实现的是计算剩余时间以使列表过期。在目前的情况下,应该表明,11 months -- hours -- minutes -- seconds我没有找到任何好的解决方案来计算差异。我怀疑用UNIX时间系统计算时差是否可行?

谢谢:-)

这就是您想要的:DateTime::diff

第一次创建第一个日期的对象:

$date = new DateTime('2013-08-22 12:07:25');

然后使用diff方法:

$diff = $date->diff(new DateTime('2014-07-25 15:46:06'));

现在,如果您打印$diff变量,您将看到包含小时、分钟、天等值的数组

使用DateTime::diff

请参阅上的文档https://www.php.net/manual/en/datetime.diff.php

尝试使用datetime::diff。以下是php.net文档中的示例:

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>

使用时间戳创建DateTime对象很容易。但是,此解决方案需要PHP 5.3+。

使用DateTime类:

示例:

$datetime1 = new DateTime();
$datetime2 = new DateTime('2014-07-25 15:46:06');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%M months, %H hours, %I minutes, and %S seconds remaining ');

输出:

11 months, 21 hours, 44 minutes, and 20 seconds remaining 

这是绝对可能的。然而,你会遇到月份的问题,因为每个月的天数不同,所以我只做下面的天、小时、分钟和秒。

$days=($expiration-$today)/(60*60*24);
$hours=(($expiration-$today)/(60*60))%24; //the modulus operator, gets a remainder
$minutes=(($expiration-$today)/(60))%(60*60);
$seconds=($expiration-$today)/60;

如果你需要几个月的时间,你会发现使用date_diff()更容易。