календарный массив предыдущий следующий месяц

Поэтому я создаю приложение календаря для размещения на веб-сайте. Оно должно:

  • Показать текущий месяц
  • Показать следующие (3) месяца
  • Показать 2 предыдущих месяца
  • показать конец предыдущего и начало следующего месяца (если позволяет макет) (как это делает и календарь Windows).

Так что сейчас я нахожусь в точке, где мой код генерирует мне массив со всеми данными, он автоматически запускает его в правильной позиции и (в соответствии с первым днем ​​месяца) и устанавливает количество дней по умолчанию равным 42. (как это было сделано в Windows)

Это вывод массива: https://pastebin.com/NqLzNW5Z
Это мой файл Calendar.class.php: https://pastebin.com/Hin8q7xW (некоторые слова голландские, извините за это.)

Мой вопрос: как мне изменить следующее:

        [7] => Array
(
[0] => Before Month Start
[1] => Before Month Start
[2] => Before Month Start
[3] => 01-06-2017
[4] => 02-06-2017
[5] => 03-06-2017
[6] => 04-06-2017
[7] => 05-06-2017
[8] => 06-06-2017
[9] => 07-06-2017
[10] => 08-06-2017
[11] => 09-06-2017
[12] => 10-06-2017
[13] => 11-06-2017
[14] => 12-06-2017
[15] => 13-06-2017
[16] => 14-06-2017
[17] => 15-06-2017
[18] => 16-06-2017
[19] => 17-06-2017
[20] => 18-06-2017
[21] => 19-06-2017
[22] => 20-06-2017
[23] => 21-06-2017
[24] => 22-06-2017
[25] => 23-06-2017
[26] => 24-06-2017
[27] => 25-06-2017
[28] => 26-06-2017
[29] => 27-06-2017
[30] => 28-06-2017
[31] => 29-06-2017
[32] => 30-06-2017
[33] => After month
[34] => After month
[35] => After month
[36] => After month
[37] => After month
[38] => After month
[39] => After month
[40] => After month
[41] => After month
)

Чтобы что-то вроде этого:

        [7] => Array
(
[0] => 29-05-2017
[1] => 30-05-2017
[2] => 31-05-2017
[3] => 01-06-2017
[4] => 02-06-2017
[5] => 03-06-2017
[6] => 04-06-2017
[7] => 05-06-2017
[8] => 06-06-2017
[9] => 07-06-2017
[10] => 08-06-2017
[11] => 09-06-2017
[12] => 10-06-2017
[13] => 11-06-2017
[14] => 12-06-2017
[15] => 13-06-2017
[16] => 14-06-2017
[17] => 15-06-2017
[18] => 16-06-2017
[19] => 17-06-2017
[20] => 18-06-2017
[21] => 19-06-2017
[22] => 20-06-2017
[23] => 21-06-2017
[24] => 22-06-2017
[25] => 23-06-2017
[26] => 24-06-2017
[27] => 25-06-2017
[28] => 26-06-2017
[29] => 27-06-2017
[30] => 28-06-2017
[31] => 29-06-2017
[32] => 30-06-2017
[33] => 01-07-2017
[34] => 02-07-2017
[35] => 03-07-2017
[36] => 04-07-2017
[37] => 05-07-2017
[38] => 06-07-2017
[39] => 07-07-2017
[40] => 08-07-2017
[41] => 09-07-2017
)

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

Конечный результат будет помещен вместе с ползунком. Когда пользователь нажимает стрелку следующего месяца, ползунок отобразит следующий месяц.

Если кто-то знает, как помочь мне сделать это, пожалуйста, дайте мне знать. Если кто-то знает лучший подход к этому, пожалуйста, дайте мне знать!

Спасибо

0

Решение

Это не проверено, поэтому дайте мне знать, если у вас возникнут какие-либо проблемы.

    public function makeMonth($m, $y)
{

$maand = array();
// Get info for this year
$info = $this->getInfo($m, $y);

// Get array with dates
$amount = $info['days'];
$dateStart = strtotime("{$y}-{$m}-1");
for ($i = 1; $i <= $amount; $i++) {
$maand[$i] = str_pad($i, 2, '0', STR_PAD_LEFT) . "-" . $m . "-" . $y;
$dateEnd = strtotime("{$y}-{$m}-{$i}");
}

// place the array content correctly
$needed = 42;
$begin = $info['firstday'] - 1;
$nognodig = $needed - ($begin + $amount);

#begin van array
while ($begin > 0) {
$begin--;
$dateStart = strtotime("-1 day", $dateStart);
array_unshift($maand, date("d-m-Y", $dateStart));
}

#eind van array
while ($nognodig > 0) {
$nognodig--;
$dateEnd = strtotime("+1 day", $dateEnd);
array_push($maand, date("d-m-Y", $dateEnd));
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector