我有一个预订系统,每天收取过夜费用。我试图弄清楚如何计算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格式转换回来。
感谢您的帮助!
答案 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);