我希望使用PHP显示下一张发票到期的日期。
例如,今天的日期是2015年11月11日,但发票是每月26日支付的。
我想表明:
下一张发票:26-12-2015
我发现了一些与我的问题相近的东西:
我需要一个类似的功能,除了我需要一个月周期 (经过几个月,减去1天),我搜遍了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
但我不知道怎么把它变成<?php ?>
。
有人可以向我解释一下吗?
答案 0 :(得分:1)
从标签我假设你使用Word按,并且你有一个表存储最后发送的发票的电子邮件和时间戳。我对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事件来“监视”该表并选择发票的用户,它还会将时间戳“转换”为您想要的格式并自动发送发票。
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate https://www.percona.com/blog/2015/02/25/using-mysql-event-scheduler-and-how-to-prevent-contention/ http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php--net-19428