4

我有个问题,

$fridays = array();
$fridays[0] = date('Y-m-d', strtotime('first friday of this month'));
$fridays[1] = date('Y-m-d', strtotime('second friday of this month'));
$fridays[2] = date('Y-m-d', strtotime('third friday of this month'));
$fridays[3] = date('Y-m-d', strtotime('fourth friday of this month'));
$fridays[4] = date('Y-m-d', strtotime('fifth friday of this month'));

但是没有第五个星期五。有些月份有第五个星期五。如何检查而不设置最后一项数组?

4

8 回答 8

7
$fifth = strtotime('fifth friday of this month');

if (date('m') === date('m', $fifth)) {
  $fridays[4] = date('Y-m-d', $fifth);
}
于 2012-09-24T08:51:54.400 回答
1

您可以使用 PHP 日期函数来执行此操作。获取您想要的月份$timestamp,然后执行以下操作:

<?php
function fridays_get($month, $stop_if_today = true) {

$timestamp_now = time();

for($a = 1; $a < 32; $a++) {

    $day = strlen($a) == 1 ? "0".$a : $a;
    $timestamp = strtotime($month . "-$day");
    $day_code = date("w", $timestamp);
    if($timestamp > $timestamp_now)
        break;
    if($day_code == 5)
        @$fridays++;

}

return $fridays;
}

echo fridays_get('2011-02');

你可以找到一个类似的帖子:在 PHP 中,如何知道这个月到今天已经过去了多少个星期一?

于 2012-09-24T08:55:48.753 回答
1

我有一个功能可以计算一个月内的星期五到我自己的应用程序....它可能对某人有所帮助。

function countFridays($month,$year){
	$ts=strtotime('first friday of '.$year.'-'.$month.'-01');
	$ls=strtotime('last day of '.$year.'-'.$month.'-01');
	$fridays=array(date('Y-m-d', $ts));
	while(($ts=strtotime('+1 week', $ts))<=$ls){
		$fridays[]=date('Y-m-d', $ts);
	}return $fridays;
}

于 2016-03-06T04:04:58.503 回答
0

我不在一台可以测试它的机器上,但是类似的东西呢......

if(date('Y-m-d', strtotime('fifth friday of this month')) > ""){
$fridays[4] = date('Y-m-d', strtotime('fifth friday of this month'));
}

下面的链接做同样的事情,并且将完全涵盖您想要做的事情,而不会像上面那样笨拙的 if 语句..

非常相似的阅读:阅读更多...

于 2012-09-24T08:49:56.737 回答
0

该月只有 5 个星期五,如果它有 30 天并且第一个星期五是该月的第 1 或第 2 天,或者如果它有 31 天并且第一个星期五是第 1、第 2 或第 3 天,因此您可以进行条件语句根据第五个星期五的计算

于 2012-09-24T08:51:09.910 回答
0
for($i=0;$i<=5;$i++)
{
       echo date("d/m/y", strtotime('+'.$i.' week friday september 2012'));
}
于 2012-09-24T09:49:51.740 回答
0

我将此作为我自己解决方案的基础:

$fridays = array();
$fridays[0] = date('d',strtotime('first fri of this month'));
$fridays[1] = $fridays[0] + 7;
$fridays[2] =  $fridays[0] + 14;
$fridays[3] =  $fridays[0] + 21;
$fridays['last'] = date('d',strtotime('last fri of this month'));

if($fridays[3] == $fridays['last']){
  unset($fridays['last']);
}
else {
  $fridays[4] = $fridays['last'];
  unset($fridays['last']);
}

print_r($fridays);

我需要在一个月内的每个星期五得到一个数组,即使有 5 个,这似乎可以使用原始问题作为我的基础来解决问题。

于 2015-11-10T09:06:17.937 回答
0
<?php //php 7.0.8

$offDays = array();

$date = date('2020-02');
$day= 'Friday';
$offDays[0] = date('d',strtotime("first {$day} of ".$date));
$offDays[1] = $offDays[0] + 7;
$offDays[2] =  $offDays[0] + 14;
$offDays[3] =  $offDays[0] + 21;
$offDays['last'] = date('d',strtotime("last {$day} of ".$date));

if($offDays[3] == $offDays['last']){
  unset($offDays['last']);
}
else {
  $offDays[4] = $offDays['last'];
  unset($offDays['last']);
}

foreach($offDays as $off){
    echo date('Y-m-d-D',strtotime(date($date."-".$off)));
    echo "\n";
}

?>
于 2020-02-07T18:48:04.873 回答