2

PHP で次のようにします。

$date = "2013-08-31";
$nextdate = strtotime(date("Y-m-d", strtotime($date)) . " +1 month");
$date = date( "Y-m-d", $nextdate );
echo $date;

2013-10-01 を取得します。つまり、9 月は 30 日しかないため、月が繰り越されます。

MySQL の場合:

UPDATE member_account SET NextBillDate = '2013-08-31'
SELECT DATE_ADD(NextBillDate, INTERVAL 1 MONTH) FROM member_account

2013-09-30 を取得します。つまり、ロールオーバーはありません

Javaでも同じです:

GregorianCalendar oDate = new GregorianCalendar();
SimpleDateFormat Sdf = new SimpleDateFormat( "yyyy-MM-dd" );
try{oDate.setTime(Sdf.parse("2013-08-31"));} catch (Exception e) {}
String sTodayDate = Sdf.format( oDate.getTime() );

oDate.add(Calendar.MONTH, 1);
String sTodayDate2 = Sdf.format( oDate.getTime() );

sTodayDate2 は「2013-09-31」です

月の日数を超えた場合にロールオーバーするように、MySQL または Java を PHP と同じように動作させる方法はありますか?

4

1 に答える 1

0

この小さなJavaスニペットを見つけて、トリックを行います:

    int oldDay = oDate.get(Calendar.DAY_OF_MONTH);
    oDate.add(Calendar.MONTH, 1);

    // If the old DAY_OF_MONTH was larger than our new one, then
    // roll over to the beginning of the next month.
    if (oldDay > oDate.get(Calendar.DAY_OF_MONTH)){
        oDate.add(Calendar.MONTH, 1);
        oDate.set(Calendar.DATE, 1);
    }

    String sTodayDate2 = Sdf.format( oDate.getTime() );
于 2013-04-22T20:01:20.967 に答える