需要在包订阅的日期中添加周、日和月
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:固定周结束日期和月结束日期快照日期