4

今日の日付 (2012 年 8 月 24 日) に基づいて、次の 3 つの値を計算しようとしています。

  1. 今月の最初の土曜日の日付。
  2. 今月の第 3 土曜日の日付。
  3. 翌月の第 1 土曜日の日付。

これは私が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) )

「の」が必要であることに注意してください。このコードは 5.3+ でのみ機能します

これらの文字列の一部は明らかに PHP 5.3 でのみ動作することに注意してください。

たとえば、「今月の最初の日」と「今月の最後の日」です。別サイトの情報によると、PHP 5.3で「xxx day of」機能が追加されたそうです。

このページにコメントしてください - http://www.php.net/manual/en/datetime.formats.relative.php

これをWindowsとubuntuの両方でphp 5.3と5.4の両方でテストしましたが、動作します。

これでうまくいかない場合は、これを試してください

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