如果你这样做,在 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 相同,因此如果超过该月的天数,它将翻转?