从日期范围确定Midnights的数量

时间:2014-07-10 01:53:21

标签: php datetime time

我有一个预订系统,每天收取过夜费用。我试图弄清楚如何计算PHP中给定日期范围内午夜的次数。

我有2个unix时间戳:

$start_date        = 1404349200; // 07/02/14 07:00:00 pm
$end_date          = 1404936000; // 07/09/14 02:00:00 pm
$total_time_here   = $end_date - $start_date; // number of seconds here
$number_overnights = (int) ($total_time_here / 60 / 60 / 24); // calculate number of 24-hour periods

$number_overnights评估为6,但该日期范围的午夜发生的次数为7,这是我想要计算的数字。当$start_date发生在当天晚些时候$end_date(晚上7点到下午2点)时,会发生这种情况。

$start_date$end_date都位于同一时区,并以UTC格式存储在数据库中,然后以PHP格式转换回来。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为这可行:

$start_date = strtotime(date('Y-m-d 00:00:00', 1404349200));
$end_date = strtotime(date('Y-m-d 23:59:59', 1404936000));
$total_time_here   = $end_date - $start_date;
$number_overnights = (int) ($total_time_here / 60 / 60 / 24);