0

我试图使用下面的代码获取当前星期星期四的日期

date('m/d/y',strtotime('thursday this week'));

如上所述,我如何在 php 中获取当前月份的所有星期四日期。

4

3 回答 3

2

建议使用 PHP 5.3.0 附带的改进的日期和时间功能。即DatePeriodDateInterval类。

<?php

$start    = new DateTime('first thursday of this month');
$end      = new DateTime('first day of next month');
$interval = new DateInterval('P1W');
$period   = new DatePeriod($start, $interval , $end);

foreach ($period as $date) {
  echo $date->format('c') . PHP_EOL;
}

编辑

可以通过多种方式完成更复杂的过滤,但这里有一个简单的方法来显示每月的每个星期二和星期四。

...
$interval = new DateInterval('P1D');
...
foreach ($period as $date) {
  if (in_array($date->format('D'), array('Tue', 'Thu'), TRUE)) {
      echo $date->format('c') . PHP_EOL;
    }
}
于 2013-10-03T13:04:37.807 回答
1

您可以像这样过滤日期:

$sDay   = 'Thursday';
$rgTime = array_filter(
   range(strtotime('first day of this month'), strtotime('last day of this month'), 3600*24),
   function($iTime) use ($sDay)
   {
      return date('l', $iTime) == $sDay;
   });

另一种获取$rgTime方式是:

$rgNums = ['first', 'second', 'third', 'fourth', 'fifth'];
$rgTime = [];
$sDay   = 'Thursday';
foreach($rgNums as $sNum)
{
   $iTime = strtotime($sNum.' '.$sDay.' of this month');
   if(date('m', $iTime)==date('m'))
   {
      //this check is needed since not all months have 5 specific week days
      $rgTime[]=$iTime;
   }
}

-现在,如果你想获得特定的格式,比如Y-m-d,那将是:

$rgTime = array_map(function($x)
{
   return date('Y-m-d', $x);
}, $rgTime);

编辑

如果你想有几个工作日,这也很容易。对于第一个样本,它将是:

$rgDays = ['Tuesday', 'Thursday'];
$rgTime = array_filter(
   range(strtotime('first day of this month'), strtotime('last day of this month'), 3600*24),
   function($iTime) use ($rgDays)
   {
      return in_array(date('l', $iTime), $rgDays);
   });
于 2013-10-03T12:01:55.723 回答
0

尝试这个。应该管用 :)

    <?
    $curMonth = date("m");
    $start = strtotime("next Thursday - 42 days");
    for ($i=1; $i < 15; $i++){
        $week = $i*7;
        if (date("m",strtotime("next Thursday - 42 days + $week days")) == $curMonth ){
            $monthArr[] = date("m/d/y",strtotime("next Thursday - 42 days + $week days"));
        }
    }


print_r($monthArr);

?>

工作代码

于 2013-10-03T12:00:48.710 回答