TOP ▲
itcore TOP プログラムパーツ
uDateNextMonth 1ヶ月後の日を返す。月末の場合は翌月末を返す。20171215 -> 20180115 20180131 -> 20180228 -> 20180331 -> 20180430 | itcore 2017年
PHP
JavaScript
関数
<?php include_once "uDateGetsumatsu.func";?>
<?php include_once "uStr0.func";?>
<?php
// 1ヶ月後の日を返す。月末の場合は翌月末を返す。20171215 -> 20180115 20180131 -> 20180228 -> 20180331 -> 20180430
function uDateNextMonth($date_num) {
if ("" == $date_num) return "";
$yyyy1 = substr($date_num, 0, 4); $mm1 = substr($date_num, 4, 2); $dd1 = substr($date_num, 6, 2); // 今月
$yyyy2 = $yyyy1; $mm2 = $mm1 + 1; // 来月
if (13 == $mm2) {
$yyyy2 += 1;
$mm2 = 1;
}
$mm2 = uStr0($mm2, 2); // 前ゼロ 月
$yyyymmdd2 = uDateGetsumatsu("$yyyy2$mm2"); // 来月末
// 今日が今月末なら来月末を返す。
if (uDateGetsumatsu($date_num) == $date_num) return $yyyymmdd2;
// 今日の日が来月末の日より大きければ来月末を返す。
$dd2 = substr($yyyymmdd2, 6, 2);
if ($dd1 > $dd2) return $yyyymmdd2;
// それ以外は来月の同じ日を返す。
return "$yyyy2$mm2$dd1";
}
?>
テスト
<?php include "uDateNextMonth.func"; ?>
<?php
$date_num = 20171115; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
$date_num = $ret; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
$date_num = 20180129; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
$date_num = $ret; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
$date_num = $ret; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
$date_num = $ret; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
$date_num = ""; $ret = uDateNextMonth($date_num); print("date_num=$date_num ret=$ret<br>\n");
?>
実行結果
date_num=20171115 ret=20171215
date_num=20171215 ret=20180115
date_num=20180129 ret=20180228
date_num=20180228 ret=20180331
date_num=20180331 ret=20180430
date_num=20180430 ret=20180531
date_num= ret=
JavaScript TOP
関数
<?php include_once "uStr0.js";?>
<?php include_once "uDateGetsumatsu.js";?>
<script>
function uDateNextMonth(date_num) {
if ("" == date_num) return "";
var yyyy1 = uSubstr(date_num, 0, 4); var mm1 = uSubstr(date_num, 4, 2); var dd1 = uSubstr(date_num, 6, 2); // 今月
var yyyy2 = Number(yyyy1); mm2 = Number(mm1) + 1; // 来月
if (13 == mm2) {
yyyy2 += 1;
mm2 = 1;
}
var mm2 = uStr0(mm2, 2); // 前ゼロ 月
var yyyymmdd2 = uDateGetsumatsu("" + yyyy2 + mm2); // 来月末
// 今日が今月末なら来月末を返す。
if (uDateGetsumatsu(date_num) == date_num) return yyyymmdd2;
// 今日の日が来月末の日より大きければ来月末を返す。
var dd2 = uSubstr(yyyymmdd2, 6, 2);
if (dd1 > dd2) return yyyymmdd2;
// それ以外は来月の同じ日を返す。
return "" + yyyy2 + mm2 + dd1;
}
// substr互換関数
function uSubstr(str1, pos, len) {
return String(str1).substr(pos, len);
}
</script>
テスト
<?php include_once "uDateNextMonth.js"; ?>
<script>
date_num = 20181215; ret = uDateNextMonth(date_num); uPrint("date_num=" + date_num + " ret=" + ret + "<br>");
date_num = 20190131; ret = uDateNextMonth(date_num); uPrint("date_num=" + date_num + " ret=" + ret + "<br>");
date_num = ret; ret = uDateNextMonth(date_num); uPrint("date_num=" + date_num + " ret=" + ret + "<br>");
date_num = ret; ret = uDateNextMonth(date_num); uPrint("date_num=" + date_num + " ret=" + ret + "<br>");
date_num = ret; ret = uDateNextMonth(date_num); uPrint("date_num=" + date_num + " ret=" + ret + "<br>");
date_num = ""; ret = uDateNextMonth(date_num); uPrint("date_num=" + date_num + " ret=" + ret + "<br>");
// print互換関数
function uPrint(str) {
document.open();
document.write(str);
document.close();
}
</script>
実行結果