Ошибка при получении даты третьей субботы

1

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

$frmdate = 2015-06-05;
$todate = 2015-08-31;

for ($date = strtotime($frmdate); $date <= strtotime($todate); $date = strtotime("+1 day", $date)) 
        {
            $custom_day = date("Y-m-d", $date);

            $custom_third_sat[] = date('Y-m-d', strtotime('third Saturday "'.$custom_day.'"'));

        }
        echo "<pre>";
        print_r($custom_third_sat);

Где я ошибаюсь?

Теги:
arrays
date

3 ответа

1
Лучший ответ

вы должны использовать of как third saturday of: попробуйте это

$custom_third_sat[] = date('Y-m-d', strtotime("third saturday of $custom_day"));

ваш полный код может быть примерно таким:

$frmdate = '2015-06-05';
$todate = '2015-08-31';
for ($date = strtotime($frmdate); $date <= strtotime($todate); $date = strtotime("+1 day", $date)) 
        {
            $custom_day = date("Y-m-d", $date);
if(!isset($custom_third_sat[date('Y-m-d', strtotime("third saturday of $custom_day"))])){
        $custom_third_sat[date('Y-m-d', strtotime("third saturday of $custom_day"))] = date('Y-m-d', strtotime("third saturday of $custom_day"));
}

        }
        echo "<pre>";
        print_r($custom_third_sat);
  • 0
    Прекрасно работает .... Я не знаю об этом .. Итак, спасибо за это .. !!
6

Каждый месяц содержит только одну "третью субботу", поэтому не нужно делать больше циклов дней. Просто попробуйте этот код один раз.

$frmdate = "2015-06-05";
$todate = "2015-08-31";
$custom_third_sat=array();
for ($date = date("Y-m-01", strtotime($frmdate)); $date <= $todate; $date = date("Y-m-01",strtotime($date."+1 Month"))) {
    if($date>$todate){
        break;
    }
    $t_date=date('Y-m-d', strtotime($date.' third Saturday'));
    if($t_date>=$frmdate && $t_date<=$todate)
    {
        $custom_third_sat[] = $t_date;
    }

}
echo "<pre>";print_r($custom_third_sat);
0

Вам просто не хватает котировок к датам

<?php
$frmdate = '2015-06-05';
$todate = '2015-08-31';

for ($date = strtotime($frmdate); $date <= strtotime($todate); $date = strtotime("+1 day", $date)) 
    {
    echo"assa";
        $custom_day = date("Y-m-d", $date);

        $custom_third_sat[] = date('Y-m-d', strtotime('third Saturday "'.$custom_day.'"'));

    }
    echo "<pre>";
    print_r($custom_third_sat);

?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню