我想从今天开始寻找下个月的第10个月。因此,如果今天是5月27日,那么接下来的10月是6月10日。如果今天是8月1日,那么接下来的10月将是8月10日。
我知道我可以使用
找到下个月的第一天$firstDayNextMonth = date('Y-m-d', strtotime('first day of next month'));
我也可以将这种格式用于我的案例吗?如果没有,我怎么能实现我的目标?
非常感谢您的帮助! :)
答案 0 :(得分:9)
strtotime
无法在一次通话中执行此操作,但您可以执行以下操作:
<?php
$current_day = (int)date('j');
if ($current_day < 10) {
$firstDayNextMonth = date('Y-m-d', strtotime('+9 days', strtotime('first day of this month')));
} else {
$firstDayNextMonth = date('Y-m-d', strtotime('+9 days', strtotime('first day of next month')));
}
echo $firstDayNextMonth;
?>
或者只是
$firstDayNextMonth = date('Y-m-d', strtotime('+9 days', strtotime('first day of ' . ((int)date('j') < 10 ? 'this' : 'next' ) . ' month')));
答案 1 :(得分:3)
您可以使用DateTime类:
$Date = new DateTime('first day of '.(date('j') < 10 ? 'this' : 'next').' month');
$Date->add(DateInterval::createFromDateString('9 days'));
var_dump($Date->format('Y-m-d'));
如果今天是'2015-06-10',这将导致'2015-07-10'。如果在这种情况下应该返回“2015-06-10”,请使用<=
(或< 11
)。
答案 2 :(得分:0)
不确定strtotime
是否能够做到这一点。
一个小技巧可以是:
$firstDayNextMonth = date('Y-m', strtotime('next month')) . '-10';
答案 3 :(得分:0)
这可能会有所帮助吗?
通过使用mktime,您可以简单地定义您想要的日期,甚至可以更轻松地匹配更多的一天。
// set our day number
$daynum = 10;
$curDay = date('d');
// get current month
$curMonth = date('n');
// get current year
$curYear = date('Y');
$firstDayNextMonth = 'MissingNo';
if($curDay < $dayNum) {
$firstDayNextMonth = mktime(0, 0, 0, $curMonth, $daynum);
}
else {
// darnit, new year. but will we party?
if ($curMonth == 12) {
// use mktime to get a timestamp. We can become very precise with this...
$firstDayNextMonth = mktime(0, 0, 0, 0, $daynum, $curYear+1);
}
else {
$firstDayNextMonth = mktime(0, 0, 0, $curMonth+1, $daynum);
// let's test if we can have a little party or not.
}
}
echo date('D',$firstDayNextMonth) === date('D') ? 'matches! let\'s party!' : 'no match :( hide the beer';
答案 4 :(得分:0)
$firstDayNextMonth = date('Y-m-d', strtotime('first day of next month'));
echo $firstDayNextMonth ."</br>";
$firstDayNextMonth = date('Y-m', strtotime('next month'));
echo $firstDayNextMonth."-10";
这就是你想要的吗?
答案 5 :(得分:0)
很简单:
date('Y-m-d', strtotime('+9 days', strtotime('first day of this month', strtotime(sprintf('+%d days', (int) date('t') - 10)))));