【问题标题】:Calculate Time difference using UNIX time stamp in PHP [duplicate]在PHP中使用UNIX时间戳计算时差[重复]
【发布时间】:2013-08-22 12:15:15
【问题描述】:

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

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

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

谢谢你:-)

【问题讨论】:

  • 你认为月份是多少? 30/31,二月呢,我宁愿不用几个月的时差。
  • 我认为您遇到了类似于此问题中所述的问题:stackoverflow.com/q/676824/365188
  • 您好 Ozair,您提供的问题链接是日期函数,我说的是在 UNIX 中显示日期格式的时间

标签: php mysql datetime unix-timestamp


【解决方案1】:

这就是您要查找的内容:DateTime::diff

首先创建具有第一个日期的对象:

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

然后使用diff方法:

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

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

【讨论】:

  • 你好 Michal,它显示以下错误,调用未定义的方法 DateTime::diff()
  • 哦.. 我看到它需要 php 5.3 或更高版本
  • 是的,它的工作。非常感谢朋友,我很感激。另外,感谢所有提出答案的人。
  • 如果您只需要检查是否已超过到期日期时间,只需检查 $diff 数组中的“反转”索引。如果它是 1. 那么返回的时间间隔是负的,因此已经超过了过期限制。
【解决方案2】:

使用DateTime::diff

查看https://www.php.net/manual/en/datetime.diff.php上的文档

【讨论】:

  • 这里没有指定如何使用时间戳
【解决方案3】:

尝试使用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+。

【讨论】:

    【解决方案4】:

    使用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 
    

    【讨论】:

      【解决方案5】:

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

      $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() 会更容易。

      【讨论】:

      • 从其他答案中可以看出,DateTime 类可以更简单地处理这个问题。
      • 相对,但不减损
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2015-05-01
      • 2013-10-14
      相关资源
      最近更新 更多