Почивни дни

C++ JAVA
User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3336
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 127

Re: Почивни дни

Post by dakata__92 » Fri Oct 09, 2020 7:05 am

uphero wrote:
Thu Oct 08, 2020 5:22 pm
Кое не ти е ясно от условието, кое те затруднява за да го приложиш.
Всъщност условието не ме затруднява. Ориентирах се, че то е приложимо само за Коледните празници.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3336
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 127

Re: Почивни дни

Post by dakata__92 » Wed Oct 14, 2020 11:16 am

Забих тотално. Как да си извадя за годината всички дати за съботи и недели в един масив? Днес забивам на такива дребни неща...

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")] = 'Неделя';
	}
}

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1600
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 165
Location: Parse error: unexpected "}" in /home/index.php on line 26

Re: Почивни дни

Post by anonimen » Wed Oct 14, 2020 3:30 pm

Така циклиш ненужно през всичките 365 дни, а ти трябват само уикендите:

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")] = 'Неделя';
}
Demo: https://ideone.com/jvBZ3y#stdin

А може да се позабавляваш и така: 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");

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3336
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 127

Re: Почивни дни

Post by dakata__92 » Thu Oct 15, 2020 7:01 am

anonimen wrote:
Wed Oct 14, 2020 3:30 pm
Така циклиш ненужно през всичките 365 дни, а ти трябват само уикендите:

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")] = 'Неделя';
}
Demo: https://ideone.com/jvBZ3y#stdin

А може да се позабавляваш и така: 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

Post Reply