TOP ▲ itcore TOP PHP共通関数

uDateNextMonth 1ヶ月後の日を返す。月末の場合は翌月末を返す。20171215 -> 20180115 20180131 -> 20180228 -> 20180331 -> 20180430 | itcore 2017年

PHP JavaScript

PHP TOP

関数

<?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>

実行結果