1

我需要帮助 从 2012 年 5 月 2 日开始,每隔一个星期三选择一次。下面的代码从当前所在的那周开始每隔一个星期三选择一次。但我需要设置开始周。我熟悉 PHP,但不熟悉 php 日期。所以请尽可能具体。我找到了这个:

$number_of_dates = 10;

for ($i = 0; $i < $number_of_dates; $i++) {
   echo date('m-d-Y', strtotime('Wednesday +' . ($i * 2) . ' weeks')). "<br>".PHP_EOL;
}
4

4 回答 4

3

用于mktime创建您的开始日期并将其作为第二个参数传递给,strtotime以便从那里开始计数:

$startDate = mktime(0, 0, 0, 5, 2, 2012); // May 2, 2012
for ($i = 0; $i < $number_of_dates; $i++) {
   $date = strtotime('Wednesday +' . ($i * 2) . ' weeks', $startDate);
   echo date('m-d-Y', $date). "<br>".PHP_EOL;
}

看到它在行动

于 2012-05-02T19:37:59.257 回答
1

在字符串中给它一个日期,而不是“星期三”(选择下一个星期三),写:

strtotime('20120502 +' . ($i * 2) . ' weeks'))

选择那个日期。(格式为 yyyymmdd)。

于 2012-05-02T19:44:51.770 回答
0

如果您有 PHP 5.2.0 或更新版本,您可以通过以下方式轻松完成:

$date = new DateTime('2006-05-02');
for ($i=0; $i<10; $i++) {
   echo $date->format('m-d-Y').'<br/>'.PHP_EOL;
   $date->modify('+1 week');
}
于 2012-05-02T20:31:14.070 回答
0

您还可以使用DatePeriodDateInterval类来使生活更轻松。

标准免责声明:以上两个类都需要PHP >= 5.3.0。

$number_of_dates = 10;

$start_date = new DateTime("5/2/12");
$interval   = DateInterval::createFromDateString("second wednesday");
$period     = new DatePeriod($start_date, $interval, $number_of_dates - 1);

foreach ($period as $date) {
    echo $date->format("m-d-Y") . "<br>" . PHP_EOL;
}
于 2012-05-02T20:40:20.740 回答