作者olctw (olc.tw)
看板Soft_Job
標題Re: [請益] 請教高手要加3個月的程式寫法
時間Mon Apr 1 23:13:25 2013
如果可以掛 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