답변 5개
</p>
<p>$year = '2024';</p>
<p>$month = '03';</p>
<p>do {</p>
<p> echo $year.$month.'
';</p>
<p> $month++;</p>
<p> if($month < 10) $month = '0'.$month;</p>
<p> if($month == 13) {</p>
<p> $year++;</p>
<p> $month = '01';</p>
<p> }</p>
<p>} while($year.$month <= date('Ym'));</p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
저 방식대로 라면..만약 2025년01월일때...
for($i=202403; $i < date("Ym"); $i++ )
이 되면..
for($i=202403; $i < 202501; $i++ )
이 되어..
202403, 202404, 202405, 202406, 202407, 202408, 202409, 202410, 202411, 202412, 202413, 202414....
202499, 202501
형식으로 표현 될겁니다.
년도의 기준을 따로 설정하시고 월로만 체크 하시는게 나으실것 같네요.
for($d=03; $d < date("m"); $d++ )
echo date("Y").$d; 형식으로
답변에 대한 댓글 1개
저도 같은 문제점을 인지하고 있었습니다.
그래서 고민였는데..
eyekiss 님과 베르만님이 정확히 질문을 파악해 주시고
해결안을 주셨습니다.
toqurk님 방법도 우회해서 해결하는 또하나의 해결안 같습니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p><?php</p>
<p>// echo date('Y-m-d'); // 2024-05-28</p>
<p>
function get_month_range($now, $gap = '') {
$ts = strtotime($now);
if ($ts === false) {
$ts = $now;
}</p>
<p> if (empty($gap) == true) {
$gap = '+0';
}
$finish_v = (int)date('Ym', $ts);
$start_v = (int)date('Ym', strtotime($gap . ' month', $ts));</p>
<p> $start = min($start_v, $finish_v);
$finish = max($start_v, $finish_v);
$dateset = [$start];
while (current($dateset) < $finish) {
$el = date('Ym', strtotime(current($dateset) . '01 +1 month'));
$dateset[] = $el;
next($dateset);
}
return $dateset;
}</p>
<p> </p>
<p>/*
// 202405
$dateset = get_month_range(time());
foreach ($dateset as $v) {
echo $v . PHP_EOL;
}</p>
<p> </p>
<p>// 202403
// 202404
// 202405
$dateset = get_month_range(time(), '-2');
foreach ($dateset as $v) {
echo $v . PHP_EOL;
}</p>
<p> </p>
<p>// 202405
// 202406
// 202407
$dateset = get_month_range(time(), '+2');
foreach ($dateset as $v) {
echo $v . PHP_EOL;
}</p>
<p> </p>
<p>// 202309
// 202310
// 202311
// 202312
// 202401
// 202402
$dateset = get_month_range('20240213', '-5');
foreach ($dateset as $v) {
echo $v . PHP_EOL;
}</p>
<p> </p>
<p>// 202403
// 202404
// 202405
// 202406
// 202407
// 202408
// 202409
// 202410
// 202411
// 202412
// 202501
// 202502
// 202503
// 202504
$diff_obj = date_diff(date_create('20240301'), date_create('20250401'));
$diff_month = 12 * $diff_obj->y + $diff_obj->m;
$dateset = get_month_range('20240301', '+' . $diff_month);
foreach ($dateset as $v) {
echo $v . PHP_EOL;
}
*/</p>
<p> </p>
<p>// 202403
// 202404
// 202405
$diff_obj = date_diff(date_create('20240301'), date_create());
$diff_month = 12 * $diff_obj->y + $diff_obj->m;
$dateset = get_month_range('20240301', '+' . $diff_month);
foreach ($dateset as $v) {
echo $v . PHP_EOL;
}</p>
<p>
답변에 대한 댓글 1개
답변 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
무조건 순차적으로 증감하는 형식은 아닌거 같습니다.
2025년이 되었을경우,
2024년 13월 ,14월... 즉 202413, 202414... 이런식으로 표기될거예요..
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
심플하면서 깔끔한 코드네요.
역시 이런 로직이 들어가야하는군요..