【问题标题】:Difference between php timestamp? Or mysql timestamp?php时间戳的区别?还是mysql时间戳?
【发布时间】:2010-08-25 18:56:58
【问题描述】:

我使用 php 在 mysql 表上记录了两个时间戳。如何使用 php 或 mysql 以小时为单位计算这些时间戳之间的差异?

【问题讨论】:

  • 如果两个日期相差超过天,你想看什么?

标签: php mysql


【解决方案1】:

如果您是实际小时数(3600 秒),只需减去时间戳并除以 3600:

$hours = ($timestamp2 - $timestamp1)/3600;
$hours = floor($hours); // to round down.

或类似的 SQL。

如果你想要“逻辑时间”:

$tz = new DateTimezone("Europe/Lisbon"); //replace with actual timezone
$d2 = new DateTime("@$timestamp2");
$d2->setTimezone($tz); 
$d1 = new DateTime("@$timestamp1");
$d1->setTimezone($tz);
$hours = $d2->diff($d1)->h;

这会在两次之间发生 DST 更改的情况下有所不同。示例:

<?php
$ltz = new DateTimezone("Europe/Lisbon");
date_default_timezone_set("Europe/Lisbon");
$ts2 = strtotime("31-Oct-2010 02:30:00");
$ts1 = strtotime("31-Oct-2010 00:30:00");

$d2 = new DateTime("@$ts2");
$d2->setTimezone($ltz);
$d1 = new DateTime("@$ts1");
$d1->setTimezone($ltz);

var_dump(floor($ts2-$ts1)/3600);
var_dump($d2->diff($d1)->h);

给予:

浮动(3) 整数(2)

【讨论】:

    【解决方案2】:

    在 php 中,您可以只使用常规数学,然后使用 date() 函数创建以小时为单位的日期时间

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2014-04-14
        • 2023-03-07
        • 2011-06-02
        • 2012-02-29
        • 1970-01-01
        • 2015-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多