Php 显示发票日期

Php 显示发票日期,php,wordpress,date,invoice,Php,Wordpress,Date,Invoice,我想使用PHP显示下一张发票的到期日期 例如,今天的日期是2015年11月11日,但发票在每个月的26日支付 我想展示: 下次发票日期:2015年12月26日 我发现了一些与我的问题很接近的东西: 我需要一个类似的功能,除了我需要一个月的周期 (加上几个月,减去一天),在我搜索了整个S.O.之后 同时,我能够设计出这个即插即用解决方案 function add_months($months, DateTime $dateObject) { $next = new DateTime($d

我想使用PHP显示下一张发票的到期日期

例如,今天的日期是2015年11月11日,但发票在每个月的26日支付

我想展示:
下次发票日期:2015年12月26日

我发现了一些与我的问题很接近的东西:

我需要一个类似的功能,除了我需要一个月的周期 (加上几个月,减去一天),在我搜索了整个S.O.之后 同时,我能够设计出这个即插即用解决方案

function add_months($months, DateTime $dateObject) 
{
    $next = new DateTime($dateObject->format('Y-m-d'));
    $next->modify('last day of +'.$months.' month');

    if($dateObject->format('d') > $next->format('d')) {
        return $dateObject->diff($next);
    } else {
        return new DateInterval('P'.$months.'M');
    }
}

function endCycle($d1, $months)
{
    $date = new DateTime($d1);

    // call second function to add the months
    $newDate = $date->add(add_months($months, $date));

    // goes back 1 day from date, remove if you want same day of month
    $newDate->sub(new DateInterval('P1D')); 

    //formats final date to Y-m-d form
    $dateReturned = $newDate->format('Y-m-d'); 

    return $dateReturned;
}
例如:

$startDate = '2014-06-03'; // select date in Y-m-d format

$nMonths = 1; // choose how many months you want to move ahead

$final = endCycle($startDate, $nMonths) // output: 2014-07-02
但是我不知道如何把它放到


有人能给我解释一下吗

根据标签,我假设您使用Word press,并且您有一个存储电子邮件和上次发送发票的时间戳的表。我对Wordpress的了解有限,但我已经构建了一个Magento插件,它可以在mysql中查看表,并根据指定的时间段(如果给定其他时间段,则使用当前日期)自动发送电子邮件,因此如果您尝试在Wordpress上执行类似操作,我可以理解该过程可能需要多长时间。现在,下面的函数将为您的日期添加一个月,以获得您所需的日期

/**
**YOU can use this function to calculate what date the next invoice will 
**need to be sent. It basically will take a date and then add the days required to your
**current date. 
**This function will generally process most date format for example timestamp, 11-11-2015, JAN,02, 2015...
**/

$value = '11-05-1993';
$dayToAdd = '1';

function processDate($val, $days)
{
    $value = $val;
    $dayToAdd = $days;

    switch($value)
    {                                   
    case is_numeric($value):
        // time()
        $value = strtotime('+'.$dayToAdd.' month', $value);
        $value = date('d - m - Y', $value);
        break;
    default: 
        // days + Unix
        $value =  strtotime(str_replace(',', '', $value));
        $value = strtotime('+'.$dayToAdd.' month',$value);
        $value = date('d - m - Y', $value);
        break;
    }

    return $value;
}

echo processDate($value,$dayToAdd);
现在,这里有一些建议,从我过去的插件。我不确定你是否要自动化这个过程,但是如果你想使这个过程自动化,你应该考虑把日期作为MySQL中的时间戳,然后创建一个MySQL事件!它会自动更新时间戳。然后,您可以运行CRON事件来“监视”表,并选择发票到期的用户。它还将时间戳“转换”为您想要的格式,并自动发送发票


我不明白您的计划是什么?解释一下你需要什么帮助?您是在寻找根据日期计算客户下一张发票的脚本,还是在寻找在发票上打印2015年12月26日的方法?如果我的问题有点不清楚,请解释。我确实在寻找一种方法,根据日期为客户计算下一张发票。例如,每张发票都必须在每月26日的付款日付款。我想知道我是如何回应下个月26号而不是这个月的。例如每26天一次,但在该日期的基础上增加一个月。U将获得2015年12月26日,而不是正常日期;26-11-2015.