2015-07-14 2 views
0

У меня есть код в PHPпроверка 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» что не так с моим кодом ??

ответ

0

Попробуйте этот код

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); 
+0

aarrghhh !!!! очень милое ... спасибо youuuuu: '(u помогите моей жизни: D –

+0

рад помочь. :) – DinukaD

0

Я бы не стал доверять преобразованию строки. Вместо этого я буду вычислять день недели в первый день месяца:

$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; 

Можете ли вы попробовать код с указанными выше значениями?

+0

окна извините, может быть, я имею в виду я хочу, чтобы результат будет «2015-07-04 | 2015-07-10» .. cz первая суббота до +6 дней после субботы –

+0

Если вы посмотрите строго на название вопроса, другой ответ, возможно, ответил на ваш вопрос. Но, глядя на ваш код, я думаю, что источником ошибок является вычисление переменных даты. Теперь у вас есть правильные отметки времени, это вопрос сравнения стоимости. – Schien

0

Вы можете попробовать с помощью этой функции:

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')); 
+0

ups извините, может быть, я имею в виду, что я хочу, чтобы результат был «2015-07-04 | 2015-07-10» .. cz в первую субботу до +6 дней после субботы –

+0

нормально, извините, я уже изменил первый параметр, попробуйте сейчас Пожалуйста. – Oscargeek

Смежные вопросы