为什么下面的代码返回 11 月的第二个星期五,但返回 12 月的第一个星期五


Why does the following code return the second friday in November but first friday in December?

抱歉,如果这是重复的。为什么以下代码会出错?它返回 12 月 6 日,目前是 12 月的第一个星期五(询问 2013 年 10 月 8 日(

$thisMonth = date('m');
$year = date("Y");
$thismonthName = date("M.", mktime(0, 0, 0, $thisMonth,0,$year));
if ($thisMonth < 12) {
$nextmonthName = date("M.", mktime(0, 0, 0, $nextMonth,1,$year));
} else {
$nextMonth = 1;
$nextmonthName = date("M.", mktime(0, 0, 0, $nextMonth,1,$nextYear));
}
$thisDate = date('M j', strtotime($nextmonthName . $year . "first friday"));
print ("second friday next month is " . $thisDate);

但将其修改为仅在下个月,就像这样,

$thisMonth = date('m');
$year = date("Y");
$thismonthName = date("M.", mktime(0, 0, 0, $thisMonth,0,$year));
if ($thisMonth < 12) {
$nextmonthName = date("M.", mktime(0, 0, 0, $nextMonth,0,$year));
} else {
$nextMonth = 1;
$nextmonthName = date("M.", mktime(0, 0, 0, $nextMonth,0,$nextYear));
}
$thisDate = date('M j', strtotime($nextmonthName . $year . "first friday"));
print ("second friday next month is " . $thisDate);
11月

8日返回,11月的第二个星期五。为什么?

你真的应该调查DateTimeDateIntervalDatePeriod类。 他们让这种事情变得微不足道。

$date = new DateTime();
$interval = DateInterval::createFromDateString('second friday of next month');
$date->add($interval);
echo 'Second Friday next month is ' . $date->format('Y-m-d');

或者获得未来 3 个月的第二个星期五:

$date = new DateTime();
$recurrence_count = 3;
$interval = DateInterval::createFromDateString('second friday of next month');
$period = new DatePeriod($date, $interval, $recurrence_count);
foreach ($period as $dt) {
    echo $dt->format('Y-m-d');
}

你的代码太复杂了。

$secondNextFriday = new DateTime('first friday of +2 months'); // First friday in december