PHP中最近的日期

时间:2015-02-07 11:05:32

标签: php date

我们的结算周期是每个月的第1和第16个月。我们希望向用户显示下一个付款日期。何你用PHP继续?

例如:今天是2月7日......所以2月16日应作为输出。

4 个答案:

答案 0 :(得分: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日

答案 1 :(得分:2)

只是如果:

$currentDay = date('j');

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

答案 2 :(得分: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

答案 3 :(得分:-1)

你是怎么循环付款的?每月的? 你可以用

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

$ 30天应该有当前日期的下一个30天