【问题标题】:php date/time intervals with subscription订阅的php日期/时间间隔
【发布时间】:2011-09-30 00:26:10
【问题描述】:

我需要一些帮助来解决这个问题。我正在尝试开发每月、每周、每季度、每年订阅的东西。我需要弄清楚下一个收费日期是什么时候。但我对理解逻辑感到困惑。我可以很容易地计算出一年来自原始交易 (<? echo date("Y-m-d",strtotime($charge_interval, strtotime($original_charge_time))); ?>),其中 $charge_interval 是“+3 个月”或“+1 个月”等。但是.. 如果 3 个月过去了,我不能只是使用该等式,因为它会将“下一个”日期显示为距原始日期一个月。有什么建议吗?

编辑:更精确。我的数据存储在数据库中,我需要确保它获得“下一个”月份而不是原始日期的一个月。假设交易发生在 11 月 15 日。现在是7月6日。我想让“下一笔交易”说 7 月 15 日,而不是 12 月 15 日(这是上面的代码将完成的),并说“我们之前已经有 7 笔费用”。

【问题讨论】:

  • 您需要更具体地了解您的需求。我了解您的订单(?)按月/周/季/年收费,对吗?所以你需要一个计算下一次充电日期的sn-p?您的数据是否存储在数据库中?

标签: php date time intervals


【解决方案1】:

strtotime 鲜为人知,但可以证明自己对这种用途非常有用。

编辑:这可能是一个线索:

$charges = 0;
$now = time();
$next_charge_time = strtotime($original_charge_time);
while ($next_charge_time < $now)
{
    $charges++;
    $next_charge_time = strtotime($charge_interval, $next_charge_time);
}
$next_charge_time = date("m/d/Y", $next_charge_time);
echo "You have been charged $charges times since $original_charge_time.";
echo "<br/>";
echo "Next charge will be on $next_charge_time";

【讨论】:

  • 不会像 strtotime("+3 month", strtotime($original_charge_time)) 这样的伎俩吗?我不明白你的问题是什么,请尝试更准确...
  • 编辑了上面的评论以举个例子。我已经按照您描述的方式使用了 strtotime 。但它并没有达到我想要的效果。
  • 仍然不清楚你的动机。但我想我是从你对 Aleksey 帖子的评论中了解到的,我正在编辑我的。
  • 没有用。对不起,我不清楚,看看上面编辑过的例子。我只需要两件事:下次应该向客户收费的时间(基于开始日期、当前日期和间隔)以及他已经被收费了多少次,如果有的话。
  • 经过测试,完美运行。除了没有向客户收费的次数(已编辑)。
【解决方案2】:

php 是否没有某种 dateadd 函数可以为日期添加月份数?

喜欢这个吗?

http://php.net/manual/en/function.date-add.php

【讨论】:

    【解决方案3】:

    【讨论】:

    • 但是.. 我如何确保它得到“下一个”月份而不是原始日期的一个月?假设交易发生在 11 月 15 日。现在是6月5日。我想让“下一笔交易”说 6 月 15 日,而不是 12 月 15 日,并说“我们之前已经有 5 个间隔”...
    • 您需要记录原始日期,添加x个月的计费周期,如果大于或等于当前日期,您需要向客户计费。
    【解决方案4】:

    试试 mktime(0, 0, 0, strftime("%d", $origtime), date("m")+1, date("Y"));

    这当然意味着午夜(前三个参数是 H、M、S,如果你愿意,你也可以使用 strftime)

    这适用于下一个日历月,如果您计算出当天晚于当天,则可以删除同一个月的“+1”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多