在特定日期每月向客户收费

时间:2016-11-16 10:41:01

标签: php mysql

我正在开发一个系统,我需要每月向客户收费。日期取决于他们订阅的日期:可能是每个月的第一天或该月的最后一天。

我存储了第一个日期。例如,如果客户今天订阅,他将在2016-11-30收取费用,因此我将2016-11-30存储在数据库中。

当日期是固定值时(让我们说第1个)不是问题。问题出现在这个月的最后一天。考虑到上面的例子,该客户需要在2016-12-31而不是2016-12-30(因为31日是12月的最后一天)收费。

如何构建一个php脚本,让所有需要在当月最后一天收费的客户?

提前致谢!

修改

示例:

客户A今天报名。该系统表示该客户需要在每月的最后一天按月收费。在customers表中有一个带有第一个日期的字段,在这种情况下它将存储2016-11-30。这意味着他将在30-NOV,31-DEC,31-JAN,28-FEB(或29-FEB),31-MAR,30-APR被指控并继续。

客户B明天签字。该系统表示该客户需要在每月的第一天按月收费。数据库字段将存储2016-12-01。这意味着他将被收取1-DEC,1-JAN,1-FEB,1-MAR,1-APR并继续。

现在,我需要构建一个脚本来决定何时向客户收费。客户B不是问题,因为他是在每个月的第一天安排的。但客户A不会​​在当月的同一天收费。在几个月内,他将被指控30日,其他31日和2月28日/ 29日。

脚本如何知道2016-11-30"表示"在现实中:"该月的最后一天"而不是字面意思2016-11-30?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

<?php echo date('d-m-Y', strtotime('last day of this month')); ?>

只需根据您的喜好和格式修改参数即可。 上个月和下个月的事情也有效。

答案 1 :(得分:0)

MySQL有一个LAST_DAY函数,它返回传递日期的月份的最后一天。

示例:

mysql> SELECT LAST_DAY('2003-02-05');
    -> '2003-02-28'