0

タイムスタンプを使用してデータベースに対してクエリを実行しています。現在、クエリにハードコードされた日付を使用していますが、

$dd1 = 20;//date("d",$ddb1);
    $mm1 = date("m");
    $yyyy1 = date("Y");
    $dd2 = 26;//date("d",$ddb2);
    $mm2 = date("m");
    $yyyy2 = date("Y");

しかし、スクリプトを実行するたびに、先週のデータ (月曜日から日曜日) を計算するコードが必要です。たとえば、今日 (水曜日) にスクリプトを実行すると、計算された時間は先週 (月曜日から日曜日) になるはずです。日曜日の夜 12:00:01 まで、今週の他の日でも同じ結果が得られるはずです。

次のようなことをしようとしました:

    //$ddb1 = time() - ($argv[1] * 24 * 60 * 60);
    //$ddb2 = time() - ($argv[2] * 24 * 60 * 60); 

現在の日付から日数を減算するには、これを自動的に行う方法が必要です。

4

4 に答える 4

3
$first_day = strtotime('Last Week');
$last_day = strtotime('Last Sunday');

echo "Last Monday was ".date('m-d-Y', $first_day);
echo "Last Sunday was ".date('m-d-Y', $last_day);

#Last Monday was 08-27-2012
#Last Sunday was 09-02-2012
于 2012-09-05T11:58:52.910 に答える
2

strtotimeだけを使用しないのはなぜですか?

$lastsunday=strtotime("last Sunday");
$lastmonday=strtotime("last Sunday")-(7*86400);

編集:

<?php
    date_default_timezone_set('Australia/NSW');
    $lastSunday=strtotime("last Sunday");
    $lastMonday=strtotime("last Sunday")-(6*86400);

    echo "Last Sunday was ".date('d-m-Y', $lastSunday)."<br>";
    echo "Last Monday was ".date('d-m-Y', $lastMonday);

?>  

出力:

Last Sunday was 02-09-2012
Last Monday was 27-08-2012 
于 2012-09-05T11:59:17.727 に答える
1

最後の日曜日を取得します。

$last_sunday = strtotime('Last Sunday');

次に、最後の月曜日を取得するために 6 日を引きます。

$last_monday = date($last_sunday-86400*6)
于 2012-09-05T12:02:34.480 に答える
0

これを試して:-

/**
* int nth_day_of_month(int $nbr, str $day, int $mon, int $year)
*   $nbr = nth weekday to find
*   $day = full name of weekday, e.g. "Saturday"
*   $mon = month 1 - 12
*   $year = year 1970, 2007, etc.
* returns UNIX time
*/

function nth_day_of_month($nbr, $day, $mon, $year)
{
   $date = mktime(0, 0, 0, $mon, 0, $year);
   if($date == 0)
   {
      user_error(__FUNCTION__."(): Invalid month or year", E_USER_WARNING);
      return(FALSE);
   }
   $day = ucfirst(strtolower($day));
   if(!in_array($day, array('Sunday', 'Monday', 'Tuesday', 'Wednesday',
         'Thursday', 'Friday', 'Saturday')))
   {
      user_error(__FUNCTION__."(): Invalid day", E_USER_WARNING);
      return(FALSE);
   }
   for($week = 1; $week <= $nbr; $week++)
   {
      $date = strtotime("next $day", $date);
   }
   return($date);
} 


function getWeekNoByDay($year = 2007,$month = 5,$day = 1) {
    return ceil(($day + date("w",mktime(0,0,0,$month,1,$year)))/7);
}
于 2012-09-05T12:15:58.867 に答える