|
|
|
อยากทราบวิธีแบ่ง Week ของแต่ละเดือนครับ ผมทำออกมาแล้วมันไม่ถูกต้องครับ |
|
|
|
|
|
|
|
ให้เว็บเราเลือก "เดือน" และ "ปี"
เช่นใส่ เดือน 8 ปี 2016
แล้วข้อมูลจะแสดงวันที่ออกมาดังนี้ครับ
week 1 ของเดือน 2016-08-01 2016-09-04
week 2 ของเดือน 2016-09-05 2016-09-11
week 3 ของเดือน 2016-09-12 2016-09-18
week 4 ของเดือน 2016-09-19 2016-09-25
week 5 ของเดือน 2016-09-26 2016-09-30
แต่ผมลองใช้ code นี้ครับ ใส่เป็น Week Number แล้วมันออกมาเพี้ยนๆ อย่างนี้ครับ
Code (PHP)
echo "<br><br>week 1 ของเดือน".date('Y-m-d',strtotime('2016W35'))." ".date('Y-m-d',strtotime('2016W36')-1);
echo "<br><br>week 2 ของเดือน".date('Y-m-d',strtotime('2016W36'))." ".date('Y-m-d',strtotime('2016W37')-1);
echo "<br><br>week 3 ของเดือน".date('Y-m-d',strtotime('2016W37'))." ".date('Y-m-d',strtotime('2016W38')-1);
echo "<br><br>week 4 ของเดือน".date('Y-m-d',strtotime('2016W38'))." ".date('Y-m-d',strtotime('2016W39')-1);
echo "<br><br>week 5 ของเดือน".date('Y-m-d',strtotime('2016W39'))." ".date('Y-m-d',strtotime('2016W40')-1);
week 1 ของเดือน 2016-08-29 2016-09-04
week 2 ของเดือน 2016-09-05 2016-09-11
week 3 ของเดือน 2016-09-12 2016-09-18
week 4 ของเดือน 2016-09-19 2016-09-25
week 5 ของเดือน 2016-09-26 2016-10-02
มันดันแสดงตอนต้นเดือน กับปลายเดือนเพี้ยนครับ มันนับข้ามเดือน
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2016-08-11 09:18:36 |
By :
zoberranger |
View :
1692 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองโค้ดนี้ดูครับ
Code (PHP)
<?php
function getFullWeeksOfMonth($iYear, $iMonth, $sFirstDayOfWeek = 'Sunday', $bExclusive = true) {
$iYear = filter_var($iYear, FILTER_VALIDATE_INT, array(
'options' => array(
'default' => (int) date('Y'),
),
));
$iMonth = filter_var($iMonth, FILTER_VALIDATE_REGEXP, array(
'options' => array(
'default' => (int) date('m'),
'regexp' => '/^([1-9]|1[012])$/',
),
));
$aDay = array('monday' => 1, 'sunday' => 1);
$sFirstDayOfWeek = filter_var($sFirstDayOfWeek, FILTER_VALIDATE_REGEXP, array(
'options' => array(
'default' => 'monday',
'regexp' => '/^monday|sunday$/',
),
));
$bExclusive = filter_var($bExclusive, FILTER_VALIDATE_BOOLEAN);
$oStart = new DateTime($iYear . '-' . $iMonth . '-01');
if ($bExclusive === true || ($bExclusive === false || isset($aDay[strtolower($oStart->format('l'))]))) {
if ((int) $oStart->format('d') === 1) {
$oStart->modify('-1 day');
}
$oStart->modify('first ' . $sFirstDayOfWeek . ' ' . $oStart->format('H:i'));
} else {
$oStart->modify('last ' . $sFirstDayOfWeek . ' ' . $oStart->format('H:i'));
}
$oEnd = clone ($oStart);
if ((int) $oStart->format('m') === $iMonth) {
$oEnd->modify('last day of this month');
} else {
$oEnd->modify('last day of next month');
}
$oInterval = new DateInterval('P1W7D');
$oDaterange = new DatePeriod($oStart, $oInterval, $oEnd);
$aDate = array();
$i = 1;
foreach ($oDaterange as $oDate) {
$oTestDate = clone $oDate;
$oLastWeekDay = $oTestDate->modify('+6 days');
if (
((int) $oDate->format('m') === (int) $iMonth || (int) $oLastWeekDay->format('m') === (int) $iMonth) &&
(($bExclusive === true && (int) $oLastWeekDay->format('m') === (int) $iMonth) ||
($bExclusive === false))
) {
$aDate[$i]['First'] = $oDate->format('Y-m-d');
$aDate[$i]['Last'] = $oLastWeekDay->format('Y-m-d');
}
$i++;
}
return $aDate;
}
echo "<pre>";
print_r(getFullWeeksOfMonth(date('Y'), date('m')));
echo "</pre>";
?>
|
ประวัติการแก้ไข 2016-08-15 23:50:34 2016-08-15 23:51:05
|
|
|
|
Date :
2016-08-15 23:49:56 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับผม แต่ Week สุดท้าย มันไม่ออกครับ
Code (PHP)
Array
(
[1] => Array
(
[First] => 2016-08-01
[Last] => 2016-08-07
)
[2] => Array
(
[First] => 2016-08-08
[Last] => 2016-08-14
)
[3] => Array
(
[First] => 2016-08-15
[Last] => 2016-08-21
)
[4] => Array
(
[First] => 2016-08-22
[Last] => 2016-08-28
)
)
|
ประวัติการแก้ไข 2016-08-21 13:18:38 2016-08-21 13:19:24
|
|
|
|
Date :
2016-08-20 14:27:13 |
By :
zoberranger |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
http://php.net/manual/en/function.date.php
|
|
|
|
|
Date :
2016-08-21 16:58:00 |
By :
goragod |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ออกครบนะครับ วีคสุดท้ายของเดือน 8 มันเป็ น week แรกของเดือนถัดไปไม่ใช่หรือ
|
|
|
|
|
Date :
2016-08-22 12:32:48 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|