需要在包订阅的日期中添加周、日和月

Posted

技术标签:

【中文标题】需要在包订阅的日期中添加周、日和月【英文标题】:Need to add weeks, days and months in a date for a package subscription 【发布时间】:2012-10-20 12:29:01 【问题描述】:

我目前正在为我当前的项目开发包管理器,我需要添加包订阅日期和包到期日期。

我正在使用 php 函数 date("Y-m-d H:i:s")

$package_subscription_start_date = date("Y-m-d H:i:s");

现在这是我的要求: 我需要有 1 天、2 天、5 天、1 周、4 周、12 周、1 个月、6 个月、9 个月、1 年、2 年、5 年和 10 年的套餐。

我如何添加这些值并计算插入 mysql 的包到期日期,类似于

$package_expiry_date = date("Y-m-d H:i:s") + 1 day;
$package_expiry_date = date("Y-m-d H:i:s") + 5 days;
$package_expiry_date = date("Y-m-d H:i:s") + 1 week;
$package_expiry_date = date("Y-m-d H:i:s") + 4 weeks;
$package_expiry_date = date("Y-m-d H:i:s") + 2 months;

$package_expiry_date = date("Y-m-d H:i:s") + 2 years;

最后我需要处理其他日期问题,例如有效日期和闰年等。 我也需要在 php 级别完成此操作,而不是使用 mysql / sql 查询。

我将不胜感激这方面的任何帮助。

【问题讨论】:

【参考方案1】:

类似

$date=date('Y-m-d H:i:s', strtotime('+1 day'));
$date=date('Y-m-d H:i:s', strtotime('+5 days'));
$date=date('Y-m-d H:i:s', strtotime('+1 week'));
$date=date('Y-m-d H:i:s', strtotime('+4 weeks'));
$date=date('Y-m-d H:i:s', strtotime('+2 months'));
$date=date('Y-m-d H:i:s', strtotime('+2 years'));

【讨论】:

【参考方案2】:

你试过php中的strtotime()命令吗?

echo $expires = strtotime(date("Y-m-d H:i:s")." + 1 day");
echo date("Y-m-d H:i:s", $expires);

给你输出

135082420020
12-10-21 08:56:40

【讨论】:

你不需要在strtotime的调用中格式化开始日期;如果是当前日期,您可以忽略它:$expires = strtotime('+ 1 day')。当然,此时您可以完全删除中间变量并获得@fortune 的答案。 谢谢马克。我知道这一点,只是试图给 OP 一个包含他自己代码的一部分的答案,以便他更容易理解。再次感谢。【参考方案3】:

看看 php DateTime 对象。

例如在日期上添加时间:

//Get the current date
$date = new DateTime();

//Add 1 day
$date->modify('+1 Day');

//Output in Y-m-d format
echo $date->format('Y-m-d');

它还有很多其他有用的功能

【讨论】:

感谢 wayneC 抽出时间回答我的问题。我真的很感激。【参考方案4】:
<?php
    echo $date = date("Y-m-d");// current da

    $date1 = strtotime(date("Y-m-d", strtotime($date)) . " +1 day");
    echo date("Y-m-d", $date1);
    echo date("Y-m-d", $date1);

    $date2 = strtotime(date("Y-m-d", strtotime($date)) . " +1 week");
    echo date("Y-m-d", $date2);

    $date3 = strtotime(date("Y-m-d", strtotime($date)) . " +2 week");
    echo date("Y-m-d", $date3);

    $date4 = strtotime(date("Y-m-d", strtotime($date)) . " +1 month");
    echo date("Y-m-d", $date4);

    $date5 = strtotime(date("Y-m-d", strtotime($date)) . " +1 year");
    echo date("Y-m-d", $date5);
?>

【讨论】:

以上是关于需要在包订阅的日期中添加周、日和月的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2016 到 SSMS:固定周结束日期和月结束日期快照日期

请求有关如何在一个查询中对多个条件的计数进行分组的帮助

在组合框中组合两个选定的数字以创建日期(日和月)

JavaFX DatePicker:可以只有日和月,没有年吗?

如果仅按日和月将两个日期与 Oracle SQL 进行比较

我已经使用了 3 个按钮,一个用于一周,一个用于一个月,一个用于一天,如果单击一周按钮,应该禁用日和月