总天数错误

时间:2016-02-06 08:47:20

标签: php

当开始日期ex:6/1/2016和 结束日期ex:8/1/2016

这是计算天数的过程,因此该过程是3天的结果 2016年6月1日 2016年7月1日 2016年8月1日

这是错误的。

必须是2016年6月1日至2016年7月1日以及2016年7月1日至2016年8月1日

所以总和2天不是3天

 $start_date = strtotime($date_from);
    $end_date   = strtotime($date_to);

    $datetime1 = date_create($date_from);
    $datetime2 = date_create($date_to);
    $interval  = date_diff($datetime1, $datetime2);
    $cs_booking_days = $interval->days;

    // Loop between timestamps, 24 hours at a time
    $total_price = '';
    $adult_price = 0;

    $pricings           = get_option('cs_price_options');
    $cs_offers_options  = get_option("cs_offers_options");

    $pricings_array     = $pricings[$post_id];

    if (isset($pricings[$post_id]['cs_plan_days'])) {
        $cs_sp_days = $pricings[$post_id]['cs_plan_days'];
    }

    $pricing_data           = array();
    $brk_counter            = 0;
    $total_orignal          = 0;
    $price['total_price']   = 0;
    $flag                   = false;

    for ($i = $start_date; $i <= $end_date; $i = $i + 86400) {

        $total_days++;
        $brk_counter++;
        $thisDate = date('Y-m-d', $i); // 2010-05-01, 2010-05-02, etc
        $day      = strtolower(date('D', strtotime($thisDate)));

        $adult_price = $pricings_array['cs_pricing_branches']['adult_' . $day . '_price'][0];


        $adult_temp_price   = $adult_price != '' ? $adult_price : 0;
        $adult_price        = $adult_temp_price;
        $to_check_date      = strtotime(date('Y-m-d', $i));

1 个答案:

答案 0 :(得分:0)

<?php

// your code goes here

$startTimeStamp = strtotime("2016/01/06");
$endTimeStamp = strtotime("2016/01/08");

$timeDiff = abs($endTimeStamp - $startTimeStamp);

$numberDays = $timeDiff/86400;  // 86400 seconds in one day

// and you might want to convert to integer
$numberDays = intval($numberDays);

echo $numberDays;

http://ideone.com/8miDiP

返回您的代码=&gt;取代

for ($i = $start_date; $i <= $end_date; $i = $i + 86400) {

:此

for ($i = $start_date; $i < $end_date; $i = $i + 86400) {

&lt; = 有问题,请输入&lt;

<强>说明

06.01 - 08.01

第一循环: $ i = 06.01和&lt; = 08.01

第二循环: $ i = 07.01和&lt; = 08.01

第三循环: $ i = 08.01且&lt; = 08.01 - 仍然为真,所以SUM = 3天

更改后

第一循环: $ i = 06.01和&lt; 08.01

第二循环: $ i = 07.01和&lt; 08.01

第三循环: $ i = 08.01和&lt; 08.01 - NOW FALSE,所以SUM = 2天