【问题标题】:PHP DateTime, paid date + a year term [duplicate]PHP DateTime,付费日期+一年期限[重复]
【发布时间】:2012-10-31 21:16:27
【问题描述】:

可能重复:
add one year to datetime with php

付款日期:2012-10-19 13:13:20

任期:3(三年)

我需要将这两个值转换为 DateTime,然后我可以将其与今天的日期进行比较,并了解订阅是否即将续订。

不确定如何正确完成此操作...

我试过了:

$term = $row['term'];   
$paid = $row['paid_date'];

$renew = strtotime("+$term years", $paid);
$today = strtotime('now');

但显然在这种情况下,所有日期都小于...

【问题讨论】:

  • 投了反对票的人完全是在浪费呼吸。感谢您的帮助...
  • 我觉得你的第一次尝试乘以 $term 很有趣(我没有对你投反对票)
  • 是的,这很有趣。我实际上并没有尝试过......这只是我需要完成的一个例子
  • stackoverflow.com/questions/5212240/… 回答 2,-1 甚至不尝试谷歌
  • Steve ...我现在正在浏览 PHP.net,有很多不同的方法可以做到这一点。这不是我需要的结果。

标签: php mysql date datetime


【解决方案1】:

如果您将付款日期作为字符串:

if(strtotime("2012-10-19 13:13:20 +3 years") > time()) {
     // expired
}

如果您将支付日期作为时间戳:

if(strtotime("+3 years", $paidDate) > time()) {
     // expired
}

【讨论】:

  • 我已经更新了我的问题
  • 假设paid_date为MySQL datetime,term为整数,使用strtotime("{$row['paid_date']} +{$row['term']} years")即可。
  • 做到了。谢谢你帮助我,萨尔曼。
【解决方案2】:

将日期转换为时间戳,并与今天的时间戳进行比较;如果相差超过 3 年(以秒为单位),则订阅即将到期。

【讨论】:

    【解决方案3】:

    将付费 + 3 年和今天转换为 unix 时间戳,如果续订日期小于今天,则订阅已过期。

    $renew = strtotime('+'. $term .' years', $paid);
    $today = strtotime('now');
    
    If ($renew < $today) 
    {
      //subscription has run out
    }
    

    假设 $term 是数据库中的整数,$paid 是 MySQL 数据库中转换为 unix 时间戳的日期时间(从paidtable 中选择 unix_timestamp(paid) aspaid)。

    【讨论】:

    • 我已经更新了我的问题
    猜你喜欢
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2019-02-04
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多