4

我试图根据今天的日期(2012 年 8 月 24 日)计算以下三个值:

  1. 本月第一个星期六的日期。
  2. 本月第三个星期六的日期。
  3. 下个月第一个星期六的日期。

这就是我在 PHP 脚本中的操作方式:

// Returns August 2012
$this_month = date("F Y");

// Returns September 2012
$next_month = date("F Y", strtotime("next month"));

// Returns August 04th, Saturday
$t_sat_1st=date('U', strtotime($this_month.' First Saturday'));

// Returns August 18th, Saturday
$t_sat_3rd=date('U', strtotime($this_month.' Third Saturday'));

// Returns September 08th, Saturday
$n_sat_1st=date('U', strtotime($next_month.' First Saturday') );

为什么最后一行代码返回了错误的日期?我预计它会在 2012 年 9 月 1 日返回。我的代码有什么问题?

4

1 回答 1

2

我不知道为什么你的代码不能完全正常工作,一定是它的解析方式..但是试试

$n_sat_1st=date('U', strtotime('first saturday of ' . $next_month) )

注意'of'是必要的。此代码仅适用于 5.3+

应该注意的是,这些字符串中的一些显然只在 PHP 5.3 中有效,特别是:

例如“本月的第一天”和“本月的最后一天”。根据在另一个网站上找到的信息,PHP 5.3 中添加了“xxx day of”功能。

评论此页面 - http://www.php.net/manual/en/datetime.formats.relative.php

我已经在 php 5.3 和 5.4 的 windows 和 ubuntu 上对此进行了测试,并且可以正常工作。

如果这不起作用,试试这个

 $d = new DateTime($next_month);
 $d->modify('first saturday of this month');
 echo $d->format('U');
于 2012-08-25T02:29:06.117 回答