如何在今天的PHP发布后3个月内获得?
从PHP我今天的日期date("Y-m-d");
可以说2012-02-22
我将如何在3个月后获得约会......即2012-05-22
修改: -
问题是关于不同月份的不同天数,feb有28天也有29天跳跃...奇数月31和其他30 ...是否有任何预先构建的功能在PHP我可以使用处理这个问题...... ??
编辑2
通过所有回复,我明白这将是一个问题: -
参考https://stackoverflow.com/a/10275921/1182021 [+1]
所以我认为为它编写一个手动功能会更好......我会把它作为答案...感谢大家的帮助和支持..
对此问题的回答
我们需要手动检查所有条件以进行准确的计算......在PHP中没有内置函数.... https://stackoverflow.com/a/10280441/1182021
答案 0 :(得分:4)
您可以使用strtotime
:
$time = strtotime('+3 months');
然而,你应该意识到你的问题并没有真正的答案,因为从口语意义上来说,“月份”并不是一个明确定义的时间单位。例如,3月31日加三个月是什么时候?没有6月31日这样的日期。
在上面给出的示例中,任何“额外”日期都将延续到下个月,因此在3月31日you'll get the 1st of July。这种行为是任意的,你认为它“正确”的天气取决于你。如果您编写自己的实现,则必须自己决定如何处理这些情况。
答案 1 :(得分:1)
$date = new DateTime();
$date->add(new DateInterval('P3M'));
答案 2 :(得分:0)
这是完成任务的100%工作代码
<?php
$month = date('n');
$year = date('Y');
$IsLeapYear = date('L');
$NextYear = $year + 1;
$IsNextYearLeap = date('L', mktime(0, 0, 0, 1, 1, $NextYear));
$TodaysDate = date('j');
if (strlen($month+3) < 10)
{
$UpdateMonth = "0".($month+3);
}
if ($month > 9) {
if ($month == 10)
{
$UpdateMonth = "01";
}
else if ($month == 11)
{
$UpdateMonth = "02";
}
else
{
$UpdateMonth = "03";
}
}
if (($month != 10) && ($month != 11) && ($month != 12))
{
if(($month&1) && ($TodaysDate != 31))
{
$DateAfterThreeMonths = $year."-".$UpdateMonth."-".$TodaysDate;
}
else if (($month&1) && ($TodaysDate == 31))
{
$DateAfterThreeMonths = $year."-".$UpdateMonth."-30";
}
else {
$DateAfterThreeMonths = $year."-".$UpdateMonth."-".$TodaysDate;
}
}
else if ($month == 11)
{
if (($TodaysDate == 28) || ($TodaysDate == 29) || ($TodaysDate == 30))
{
if ($IsLeapYear == 1)
{
$DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-28";
}
else if ($IsNextYearLeap == 1)
{
$DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-29";
}
else
{
$DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-28";
}
}
else
{
$DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-".$TodaysDate;
}
}
else
{
$DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-".$TodaysDate;
}
echo $DateAfterThreeMonths;
?>
我们可以通过在顶部使用这段代码来手动检查内容: -
// Just change the values of $month, $year, $TodaysDate
$month = 11;
$year = 2012;
$IsLeapYear = date('L');
$NextYear = $year + 1;
$IsNextYearLeap = date('L', mktime(0, 0, 0, 1, 1, $NextYear));
$TodaysDate = 31;
只需复制并粘贴代码,然后在浏览器中进行检查:)
答案 3 :(得分:-2)
来自the PHP manuals的示例:
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
所以试试:
$lastmonth = mktime(0, 0, 0, date("m")+3, date("d"), date("Y"));