看板 Soft_Job 關於我們 聯絡資訊
如果可以掛 PHP 進來...XD 就可以這樣寫: <?php $dateBegin = '2013/10/31'; $dateBeginUnix = strtotime($dateBegin); $dateNextUnix = strtotime('+1 day', $dateBeginUnix); if (date('m', $dateBeginUnix) !== date('m', $dateNextUnix)) { $theYear = date('Y', $dateBeginUnix); $theMonth = ''; switch (date('n', $dateBeginUnix)) { case '10': $theMonth = '1'; $theYear += 1; break; case '11': $theMonth = '2'; $theYear += 1; break; case '12': $theMonth = '3'; $theYear += 1; break; default: $theMonth = date('n', $dateBeginUnix) + 3; } $dateThreeMonUnix = strtotime("{$theYear}/{$theMonth}/01"); $dateThreeMonUnix = strtotime('+1 month', $dateThreeMonUnix) - 1; } else { $dateThreeMonUnix = strtotime('+3 months', $dateBeginUnix); } echo '<br />date threemonth: ' . date('Y-m-d', $dateThreeMonUnix); ※ 引述《ppking (老宅男)》之銘言: : 如有一個起的變數是2013/04/01 : 則迄的值就為2013/07/01 : 但如遇到2013/03/31 : 則迄的值就要為2013/06/30 : 目前遇到困擾是31日及2月底日期的判斷 : 造成程式寫法要寫很多if寫法 : 不知各位高手有沒有比較簡單的寫法 就可寫出 : 謝謝 : IF MONTH(s_date) >= 10 THEN : LET e_date=MDY(MONTH(s_date)-9,DAY(s_date),YEAR(s_date)+1) : ELSE : LET e_date=MDY(MONTH(s_date)+3,DAY(s_date),YEAR(s_date)) : END IF : IF e_date IS NULL THEN : IF MONTH(s_date) >= 9 THEN : LET e_date=MDY(MONTH(s_date)-8,DAY(s_date),YEAR(s_date)+1) : ELSE : LET e_date=MDY(MONTH(s_date)+4,DAY(s_date),YEAR(s_date)) : END IF : LET e_date = MDY(MONTH(e_date),1,YEAR(e_date)) - 1 : END IF -- kiang -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.166.136
olctw:不過後來才看到 11/29 or 11/30 的例外狀況,殘念... 04/01 23:17
olctw:只要加例外處理即可,但有點懶了 XD 04/01 23:18
ppking:感謝o大依PHP語法來寫,對我們這種老一輩來講算很新的語言 04/02 08:52