簡體   English   中英

PHP檢查兩個日期之間的日期

[英]PHP check if date between two dates

我在php中有代碼

date_default_timezone_set('Asia/Jakarta');
$dt         = new DateTime('first Saturday of this month');
$periode1   = $dt->format('Y-m-d');
$periode11  = date( "Y-m-d", strtotime( "$periode1 +6 day" ) );

$tgl_delivered  = "2015-07-10";
if (($tgl_delivered >= $periode1) && ($tgl_delivered <= $periode11)){
$tanggal_periode="$periode1 | $periode11";
}
echo "$tanggal_periode";

結果為“ 2015-08-08 | 2015-08-14”;

但是我希望此結果為“ 2015-07-04 | 2015-07-10”,我的代碼有什么問題?

我不相信字符串轉換。 相反,我將計算該月第一天的工作日:

$day1=mktime(0,0,0,date('n'),1,date('Y');
$dow=date('w',$day1);

並找出第一個星期六:

$sat = (6-$dow)*3600*24+$day1;

交貨日期相隔6天:

$delivery = $sat + 3600*24*6;

您可以嘗試使用上述值的代碼嗎?

您可以嘗試使用此功能:

function checkBetweenDates($date, $start, $end) {
    $dateValue  = new DateTime($date);
    $startValue = new DateTime($start);
    $endValue   = new DateTime($end);

    return ($dateValue >= $startValue && $dateValue <= $endValue);
}

/* function return true or false */
var_dump(checkBetweenDates('first Saturday of this month', '2015-07-04', '2015-07-10'));

試試這個代碼

function getTanggalPeriod($tglDelivered)
{
    $data=explode("-",$tglDelivered);
    $periode1 = date('Y-m-d',strtotime('First Saturday '.date('F o', @mktime(0,0,0, $data[1], 1, $data[0]))));
    $periode11 = date('Y-m-d',strtotime($periode1.' +6 day'));
    if (($tglDelivered >= $periode1) && ($tglDelivered <= $periode11))
    {
        echo $tanggal_periode="$periode1 | $periode11";
    }
    else
    {
        echo 'Not OK';
    }
} 
$tglDelivered = date('Y-m-d',strtotime("2015-07-10")); // Make sure of maintain the date format.
getTanggalPeriod($tglDelivered);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM