【问题标题】:time subtract mysql and php时间减去mysql和php
【发布时间】:2010-11-28 17:37:53
【问题描述】:

我想在php中找到mysql时间戳和现在时间之间的时间差。

$timesince = strtotime("now") -  $row['DateTime'];

这是我的尝试,但它似乎不起作用。

另外,理想情况下,我希望输出格式很好,例如:34 分钟前、2 小时 5 分钟前、4 天、2 分钟前等。

真的,真的很感谢任何帮助。

【问题讨论】:

  • +1 热烈欢迎 SO。此外,如果您是新来的,请务必接受您认为最适合您需求的答案。

标签: php mysql


【解决方案1】:

strtotime("now") 返回自 Unix 纪元以来的秒数,即整数。 mysql“时间戳”字段将是 YYYY-mm-dd HH:mm:ss。您首先需要使它们具有相同的格式。我建议将 mysql 时间戳字段选择为 UNIX_TIMESTAMP(DateTime),这样它会返回一个整数,然后您就可以在几秒钟内计算出 $timesince

然后,就像@Derek Adair 所说,查看PHP Date Object

【讨论】:

  • 对不起,我的 cmets 本来是针对你的。我使用了你的方法,但我得到的数字很大,即 1290967451,当它应该在 100 秒时
  • @Sam 你明白了吗? MySQL 列中的日期是什么?
  • @Sam 我更喜欢这样做是为了在 MySQL 中获得真正的不同:UNIX_TIMESTAMP() - UNIX_TIMESTAMP('DateTime')then 在 PHP 中完成其余的工作,因为 strtotime 效率很低。另外——strtotime("now") 等同于 time() 仅供参考。
  • 非常感谢,现在工作正常。我需要将 UNIX_TIMESTAMP('DateTime') 更改为 UNIX_TIMESTAMP(DateTime)。我很高兴它在 mysql 中更快,我唯一担心的是我没有打印整个数组,所以我在做不必要的计算。
【解决方案2】:

查看PHP Date Object的手册

只需使用date() 即可返回当前日期。

尝试类似...

$curDate = date();
$mysqlTimestamp = $row['timestamp'];

$dif = strtotime($curdate) - strtotime($mysqlTimestamp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多