0

日付がありますが、今月の初めからこの平日が何回あったかを知りたいです。(1 ~ 5 のはずです)

この番号が必要な理由は、たとえば「毎月第 4 水曜日」に何かを配達することをお客様に伝えているためです。

事前定義された週の開始日から開始された週数を返すだけのものは必要ありません (私が見つけることができるすべての例はまさにそれを行います)。

次のように、このコードの逆を実装したことを知っておくと役立つ場合があります。

echo date('Y-m-d', strtotime("2013-08 4 Wednesday")); 
//returns the 4th Wednesday of the month namely "2013-08-28"

「2013-08-28」で始まる「4」を取得するにはどうすればよいですか?

4

3 に答える 3

1

私はこれでクラックを取ります... PHP date() 関数によって返された月の数を取得し、7 で割って ceil() すると、正しい数が得られると思います (私はちょうど私のカレンダーなので、100%保証されているわけではありません)。次のコードには関数が含まれており、最後に次の出力を生成するテスト ループを実行します。

第 2 月
第 2 火
第 2 水 第
3 木第
3 金 第
3 土 第
3 日 第
3 月 第
3 火 第
3 水
第4木曜
第4金曜
第4土曜
第4日曜
第4月曜
第4火曜

<?php

   function getDateString($time) {
     date_default_timezone_set ( "America/Los_Angeles" );
     //$time = time();
     $which_day = ceil((int) date('j', $time) / 7);
     $which_day_name = date('D', $time);

     $suffix = 'st';
     switch ($which_day) {
       case 2 : 
         $suffix = 'nd';
         break;
       case 3 :
       case 4 :
       case 5 :
         $suffix = 'th';
         break;
     }   

     return $which_day . $suffix . ' ' . $which_day_name . ' of the month ' . PHP_EOL;
   }


   $time = time();
   echo getDateString($time);
   foreach (range(0, 15) as $day) {
     $time = time() + ($day * 24 * 60 * 60);
     echo getDateString($time);
   }
 ?>
于 2013-08-13T00:55:40.533 に答える
1

このような式は、コードへの最小限の変更で機能するはずです。

<?php
$d = date('d', strtotime("2013-08-28")); 
echo ceil($d/7).PHP_EOL;
?>

「4」を出力します。関数でラップできると確信しています。

ceil()

于 2013-08-13T00:57:19.987 に答える