2015-02-07 134 views
0

我們的結算週期爲每個月的第1個月和第16個月。我們希望向我們的用戶展示下一個付款日期。何繼續與PHP?PHP中的最近日期

例如:今天是2月7日...所以2月16日應該作爲輸出。

+0

..數字化? :P – Kroltan 2015-02-07 11:07:10

回答

1

我們需要照顧的情況下比如12月17日,因爲我們需要返回1月1日下面的代碼片段計算下一個付款日期:

date_default_timezone_set('UTC'); 
list($day, $month, $year) = array_map('intval', explode(',', date('j,m,Y'))); 
if ($day < 16) 
    $day = 16; 
else { 
    $day = 1; 
    $month = $month % 12 + 1; 
    if ($month == 1) $year += 1; 
} 
echo date(DATE_RFC2822, mktime(0, 0, 0, $month, $day, $year)); 

它是當前日期的輸出:

Mon, 16 Feb 2015 00:00:00 +0000 
4
function get_payout_date($today, $payout_dates) { 
    foreach ($payout_dates as $d) { 
     if ($d > $today) return $d; 
    } 

    return $payout_dates[0]; 
} 

$payout_dates = array(1, 16); 
echo get_payout_date(intval(date('d')), $payout_dates); 

如果你想允許同一日期,你可以使用$d >= $today

你想從付款日期,然後全日:

$payout_date = get_payout_date(intval(date('d')), $payout_dates); 
$date = date('jS M, Y', strtotime(date('Y-m-') . $payout_date)); 
echo $date; 

輸出:2015年2月16日

+0

您的代碼對於這樣一個簡單的問題具有非常高的複雜度。 – 2015-02-07 11:17:35

+0

是的,你的回答對這種情況有好處,但如果明天我的付款日期是1,3,6,10,15,24,該怎麼辦? – Ananth 2015-02-07 11:20:09

+0

這是事實。你的代碼更加靈活。但你知道我回答有關問題。我投票了你的解決方案。 – 2015-02-07 11:22:34

-1

喜你是怎麼週期付款? mothly? 可以使用

$next30day=date('Y-m-d', strtotime("+30 days")); 

$ next30day旁應有30天當前日期的

2

只需簡單,如果:

$currentDay = date('j'); 

if ($currentDay >= 1 && $currentDay <= 16) { 
    echo '16th'; 
} else { 
    echo '1st'; 
}