【问题标题】:Show invoice date [closed]显示发票日期[关闭]
【发布时间】:2015-11-11 12:47:58
【问题描述】:

我想使用 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 ?>

有人可以向我解释一下吗?

【问题讨论】:

  • 我不明白你想做什么?说明你需要什么帮助?您是在寻找根据日期为客户计算下一张发票的脚本,还是在寻找在发票上打印 26-12-2015 的方法?解释更多
  • 对不起,如果我的问题有点不清楚。我确实在寻找一种方法来根据日期计算客户的下一张发票。例如,每张发票必须在每个月的 26 日支付。我想知道我如何回应下个月的 26 号而不是本月。例如;每个月的第 26 天,但该日期增加了一个月。你会得到 26-12-2015 而不是正常的日期; 2015 年 11 月 26 日。

标签: php wordpress date invoice


【解决方案1】:

根据标签,我假设您使用的是 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 事件来“监视”表格并选择发票到期的用户,它还将时间戳“转换”为您想要的格式并自动发送发票。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多