请问如何合理计算续费时间

发布于 2022-09-04 13:02:12 字数 360 浏览 16 评论 0

2017-02-28这个日期为时间节点,往后续费2个月,代码如下

// print 2017-04-28
echo date('Y-m-d', strtotime('+2 month', strtotime('2017-2-28')));

得到的结果少2天,那如果我人为将2月份续费的用户统一补2天时间,那在续费1年的正常情况下,又多出2天

// print 2018-02-28
echo date('Y-m-d', strtotime('+1 year', strtotime('2017-2-28')));

那么请问如何做到合理计算续费时间呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

帅哥哥的热头脑 2022-09-11 13:02:12

这个问题是需求问题,不应该由程序员来解决。

制订业务需求的过程中,就必须明确,【时间】这个概念。不过大部分公平的包月计时原则,都是以30天作为一个月、365天作为一年来计算。

因为12 * 30 = 360,所以按月充值的用户,一年就少了5天时间;而按年充值的用户,一年就多获取5天时间。这些费用计算方法应该在合同里明示。

城歌 2022-09-11 13:02:12

够一年的时间按照年计算:1年 2017-2-28 - 2018-2-28

不够一年按照30天计算: 1月 2017-2-28 - 2017-3-30

这样在单独开通12个月时有360天,把12月看作按年续费,少的那几天就当作赠送天数

幸福不弃 2022-09-11 13:02:12

我说下我个人想法,按照离月末的天数计算,若有更好的方法请补充答案,谢谢:

function xufei($add_num) 
{
    $month = date('m', time()) + 1;
    $limit = strtotime(sprintf('%s-%s-01', date('Y'), $month)) - 86400 - strtotime(date('Y-m-d', time()));
    
    $add_num += $month;
    return strtotime(sprintf('%s-%s-01', date('Y') + floor($add_num / 12), $add_num % 12)) - 86400 - $limit;
}

echo date('Y-m-d', xufei(5));   
终止放荡 2022-09-11 13:02:12

这种需求最好是跟产品经理沟通。有些是按自然月算;有些按30天一个月算;还有些按31天算一个月。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文