当前位置: 首页 > 面试题库 >

计算PHP DateInterval中的总秒数

周辉
2023-03-14
问题内容

计算两个日期之间总秒数的最佳方法是什么?到目前为止,我已经尝试了以下方法:

$delta   = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;

但是,days在当前的PHP5.3版本中,DateInterval对象的属性似乎已损坏(至少在Windows上,它总是返回相同的6015值)。我还尝试过这样做,无法保留每个月的天数(四舍五入到30),leap年等:

$seconds = ($delta->s)
         + ($delta->i * 60)
         + ($delta->h * 60 * 60)
         + ($delta->d * 60 * 60 * 24)
         + ($delta->m * 60 * 60 * 24 * 30)
         + ($delta->y * 60 * 60 * 24 * 365);

但是我真的不满意使用这种半成品解决方案


问题答案:

您可以不比较时间戳吗?

$now = new DateTime('now');
$diff = $date->getTimestamp() - $now->getTimestamp()


 类似资料:
  • 问题内容: 我有这个MySQL查询: 返回如下内容: 我真正想要的是末尾的另一列以显示运行总计: 这可能吗? 问题答案: 也许对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一些数学运算。 这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行中的total变量,否则您将只获得一列NULL值。

  • 问题内容: 在没有应用任何条件的情况下,对表中的行总数进行计数的最佳MySQL命令是什么?我正在通过php执行此操作,所以也许有一个php函数可以为我执行此操作?我不知道。这是我的php的示例: 问题答案:

  • 问题内容: 想象一下下表(称为): 我想要一个按日期顺序返回运行总计的查询,例如: 我知道在SQL Server 2000/2005/2008中可以通过多种方式进行此操作。 我对使用aggregating-set-statement技巧的这种方法特别感兴趣: …这是非常有效的,但是我听说周围存在一些问题,因为您不一定能保证该语句将以正确的顺序处理行。也许我们可以获得有关该问题的明确答案。 但是,人

  • 问题内容: 我有这个MySQL查询: 返回如下内容: 我真正想要的是末尾的另一列显示运行总计: 这可能吗? 问题答案: 也许这对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一点数学运算。 这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行的total变量,否则您将只获得一列NULL值。

  • 我试图计算两个时间之间有多少毫秒(例如,从13:00到13:01,有60000毫秒)。时间由2个整数(小时、分钟)表示。 我写了这个函数: 然而,当第二次是第二天时,这将不起作用(例如,从周日14:00到周一13:00之间有多少毫秒?)

  • 我试图在Acrobat中使用JavaScript以交互形式总计10个数据字段。最初,数据是手动输入的。我们创建的计算公式在手动输入数据时有效,但当数据从另一个表单导出,然后使用FDF文件导入到此表单时,计算公式不能正确合计。 当前工作流使用三种形式。数据输入表格1 打开表格3,将两个数据文件导入该表格。有两个具有类似公式的总计字段,一个将所有负数相加,另一个将所有正数相加。 但是,当我们导入两个文