Всъщност условието не ме затруднява. Ориентирах се, че то е приложимо само за Коледните празници.
Почивни дни
- dakata__92
- Web-tourist
- Posts: 3359
- Joined: Tue Aug 02, 2011 7:24 pm
Re: Почивни дни
Забих тотално. Как да си извадя за годината всички дати за съботи и недели в един масив? Днес забивам на такива дребни неща...
Edit:
След едно хубаво кафе се справих.
Edit:
След едно хубаво кафе се справих.
Code: Select all
$year = '2020';
$begin = new \DateTime($year."-01-01 00:00:00");
$end = new \DateTime($year."-12-31 00:00:00");
$range = new \DatePeriod($begin, new \DateInterval('P1D'), $end);
$weekends = [];
foreach($range as $date){
if ($date->format("N") == 6 ) {
$weekends[$date->format("Y-m-d")] = 'Събота';
}
if ($date->format("N") == 7 ) {
$weekends[$date->format("Y-m-d")] = 'Неделя';
}
}
- anonimen
- Web-tourist
- Posts: 1607
- Joined: Mon Jun 11, 2012 6:07 pm
- Location: Parse error: unexpected "}" in /home/index.php on line 26
Re: Почивни дни
Така циклиш ненужно през всичките 365 дни, а ти трябват само уикендите:
Demo: https://ideone.com/jvBZ3y#stdin
А може да се позабавляваш и така: https://thisinterestsme.com/php-get-fir ... -of-month/
И да вземеш крайните дати така:
Code: Select all
$range = new \DatePeriod(new \DateTime('@'.$first),
new \DateInterval('P1W'),
new \DateTime('@'.$last));
$weekends = [];
foreach($range as $date){
$weekends[$date->format("Y-m-d")] = 'Събота';
$weekends[$date->add($one_day)->format("Y-m-d")] = 'Неделя';
}
А може да се позабавляваш и така: https://thisinterestsme.com/php-get-fir ... -of-month/
И да вземеш крайните дати така:
Code: Select all
$first = strtotime("first saturday of 2020-01");
$last = strtotime("last sunday of 2020-12");
- dakata__92
- Web-tourist
- Posts: 3359
- Joined: Tue Aug 02, 2011 7:24 pm
Re: Почивни дни
Благодаря ти! Това ми трябваше. Смених моя код с твоя по-оптимизиран е!anonimen wrote: ↑Wed Oct 14, 2020 3:30 pmТака циклиш ненужно през всичките 365 дни, а ти трябват само уикендите:
Demo: https://ideone.com/jvBZ3y#stdinCode: Select all
$range = new \DatePeriod(new \DateTime('@'.$first), new \DateInterval('P1W'), new \DateTime('@'.$last)); $weekends = []; foreach($range as $date){ $weekends[$date->format("Y-m-d")] = 'Събота'; $weekends[$date->add($one_day)->format("Y-m-d")] = 'Неделя'; }
А може да се позабавляваш и така: https://thisinterestsme.com/php-get-fir ... -of-month/
И да вземеш крайните дати така:
Code: Select all
$first = strtotime("first saturday of 2020-01"); $last = strtotime("last sunday of 2020-12");
+1