用 php 获取下一个第 15 天和/或第 30 天的日期?

Posted

技术标签:

【中文标题】用 php 获取下一个第 15 天和/或第 30 天的日期?【英文标题】:Get the date of the next 15th and/or 30th day with php? 【发布时间】:2015-11-04 15:40:27 【问题描述】:

我需要获取下个月即将到来的15ths30ths的日期作为当前日期。 (如果 2 月在范围内,那么它当然必须是 28/29 日)。

我可以使用 mktime/strtotime 或使用其他方法吗?

我得到了这个,但当然这只是为了得到这个月的最后一天和下个月。我需要即将到来的 15 日和 30 日。

$cuota1 = date('t-m-Y', strtotime('+15 days'));
    return $cuota1;

$cuota2 = date('t-m-Y', strtotime('+30 days'));
    return $cuota2;

$cuota3 = date('t-m-Y', strtotime('+45 days'));
    return $cuota3;

提前致谢。

【问题讨论】:

【参考方案1】:

希望我的想法是正确的,可能这个解决方案很长,但看起来很安全:

$numOfDays = date('t', $todayStamp);
$base = strtotime('+'.$numOfDays.' days', strtotime(date('Y-m-01', $todayStamp)));
$day15 = date('Y-m-15', $base);
$day30 = date('Y-m-'.min(date('t', $base), 30), $base);

其中$todayStamp 通常是time() 的值,但出于调试目的,它可以是任意日期的strtotime()。以下一个闰年的“困难”为例:

$today = '2016-01-30';
$todayStamp = strtotime($today);
$numOfDays = date('t', $todayStamp);
$base = strtotime('+'.$numOfDays.' days', strtotime(date('Y-m-01', $todayStamp)));
$day15 = date('Y-m-15', $base);
$day30 = date('Y-m-'.min(date('t', $base), 30), $base);
var_dump($day15);
var_dump($day30);

输出是

string(10) "2016-02-15"
string(10) "2016-02-29"

2016-02-29 的输出将是

string(10) "2016-03-15"
string(10) "2016-03-30"

【讨论】:

效果很好,在我需要的方面朝着正确的方向前进,非常感谢。【参考方案2】:

也许有点粗略,但你可以尝试这样的事情,当然这根本不能验证日期:-

$m=date('m')+1;
$y=date('Y');

$d=15;
echo date( 't-m-Y', strtotime( "$d.$m.$y" ) );
# > outputs: 31-12-2015

$d=30;
echo date( 't-m-Y', strtotime( "$d.$m.$y" ) );
# > outputs: 31-12-2015

【讨论】:

【参考方案3】:
$tstamp =  strtotime('+1 month');  //add a month
$m=date('m',$tstamp);   //month value
$y=date('Y');  //this year
$date15 = date("Y-m-d", strtotime("$y-$m-"."15"));  //15 th of next month
$date31 = date("Y-m-t", strtotime("$y-$m-"."15")); //last date of next month

这将为您提供下个月的最后日期。

【讨论】:

以上是关于用 php 获取下一个第 15 天和/或第 30 天的日期?的主要内容,如果未能解决你的问题,请参考以下文章

获取字符 '=' 之前的所有 std::string 或第一个单词

简写if / else php不能继续

PHP DATE 如何取得当月的第一天和最后一天

获取 jq json 解析中的第一个(或第 n 个)元素

MYSQL SELECT:如何获取一个额外的列,指示是不是满足 WHERE 子句中的第一个或第二个条件?

java 获取当月第一天和最后一天 获取前一个月第一天和最后一天