यह स्निपेट रविवार को सप्ताह के पहले दिन के रूप में उपयोग करता है:
$start = new DateTime('2014-10-01');
$end = new DateTime('2014-10-31 23:59');
$interval = new DateInterval('P1D');
$dateRange = new DatePeriod($start, $interval, $end);
$weekNumber = 1;
$weeks = array();
foreach ($dateRange as $date) {
$weeks[$weekNumber][] = $date->format('Y-m-d');
if ($date->format('w') == 6) {
$weekNumber++;
}
}
प्रत्येक सप्ताह में सभी दिन होंगे।
यदि आप केवल प्रत्येक सप्ताह के पहले और अंतिम दिन चाहते हैं तो आप बस array_shift
. का उपयोग कर सकते हैं और array_pop
उन्हें पाने के लिए। उदाहरण के लिए, पहले सप्ताह के लिए आप इसका उपयोग कर सकते हैं:
$wk1Start = array_shift($weeks[1]); //gives you first day of week 1
$wk1End = array_pop($weeks[1]); // give you the last day of week 1
यदि आप प्रत्येक सप्ताह के लिए आरंभ और समाप्ति तिथियां चाहते हैं, तो इसे करने का एक तरीका यहां दिया गया है:
$ranges = array_map(function($week) {
return 'start: ' . array_shift($week)
. ', end: ' . array_pop($week); },
$weeks);
यह $ranges
. का आउटपुट है मेरे लिए:
Array
(
[1] => start: 2014-10-01, end: 2014-10-04
[2] => start: 2014-10-05, end: 2014-10-11
[3] => start: 2014-10-12, end: 2014-10-18
[4] => start: 2014-10-19, end: 2014-10-25
[5] => start: 2014-10-26, end: 2014-10-31
)