如何在PHP中获得一个月的第一,第三和第五个星期六?

时间:2015-08-03 06:16:31

标签: php date

我已经找到了解决这个问题的方法,但是在某些情况下它出了问题。以下是我的发现:

此代码段将打印2015年8月的第一个星期六和2015年7月:

$sat = date("F Y",strtotime("2015-08-01"));
echo $fir_sat = "$sat first saturday";
echo " is ".date('d', strtotime($fir_sat));

$sat = date("F Y",strtotime("2015-07-04"));
echo $fir_sat = "$sat first saturday";
echo " is ".date('d', strtotime($fir_sat));

以下是输出:

August 2015 first Saturday is 08
July 2015 first Saturday is 04

但实际上它是 01

August 2015 first Saturday is 01

它是如何发生的?解决办法是什么?

根据您的反馈,我尝试了一些编码。以下是我的发现。错误发生是因为php版本。

在5.2.9的较低版本的PHP中,以下代码无效

回音日期(' Y-m-d',strtotime(' 2015年8月的第一个星期六'));

但是在像5.4这样的更高版本中它正在进行中

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

尝试使用of作为

echo date('d F Y', strtotime('first saturday of $fir_sat'));
  

"' ordinal dayname'' "没有进展到另一天。

而不是

echo date('d F Y', strtotime('$fir_sat first saturday'));
  

"序数日期"确实进展到另一天。

You can check the difference over here

您还可以查看Docs(Notes)

答案 1 :(得分:0)

这样你可以利用strtotime功能。

echo date('d F Y', strtotime('first saturday of August 2015'));
echo "<br>";
echo date('d F Y', strtotime('second saturday of August 2015'));
echo "<br>";
echo date('d F Y', strtotime('fifth saturday of August 2015'));

请确保您在年底和月份正确通过,因为它会为您提供正确的日期。

由于

阿米特

答案 2 :(得分:0)

试试这个

echo date('Y-m-d', strtotime('first saturday of august 2015'));
echo date('Y-m-d', strtotime('third saturday of august 2015'));
echo date('Y-m-d', strtotime('fifth saturday of august 2015'));

答案 3 :(得分:0)

简单解决方案,在我当地进行测试。

$sat = date("d F Y",strtotime("2015-08-01"));
echo $fir_sat = "$sat<br> First saturday";
echo " is ".date('d', ($fir_sat)); 


$thi_sat = strtotime ( '+14 day' , strtotime ( $sat ) ) ;
$thi_sat = date ( 'd' , $thi_sat );
echo "<br>third Saturday at ".$thi_sat;

$fifth_sat = strtotime ( '+28 day' , strtotime ( $sat ) ) ;
$fifth_sat = date ( 'd' , $fifth_sat );
echo "<br>Fifth Saturday at ".$fifth_sat;

Out put是:

01 August 2015
First saturday is 01
third Saturday at 15
Fifth Saturday at 29 

这可能会有所帮助。欢呼!!