今日は、PHP strtotime で今日の前月を計算する問題の解決策を編集者が紹介します。今日の前月の計算で問題が発生した場合は、参考として参照してください。
PHP、先月
strtotime には小さな問題があります
コードは次のとおりです | コードをコピー |
> php -r”echo date(‘Ymd000000’,strtotime (‘-1 ヶ月’, strtotime (’201307310000’));” |
検索後、次の方法がより正確です
コードは次のとおりです | コードをコピー |
$time = strtotime("2011-03-31"); |
日付のタイムスタンプを取得できる関数 mktime:
int mktime ([ int $hour [, int $分 [, int $sec [, int $month [, int $day [, int $year [, int $is_dst ]]]]] )
指定された引数に基づいて Unix タイムスタンプを返します。タイムスタンプは、Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) から指定された時刻までの秒数を含む長整数です。
パラメータは右から左に省略でき、省略されたパラメータはローカルの日付と時刻の現在の値に設定されます。
それで計算できます
コードは次のとおりです | コードをコピー |
関数 last_month_day($time){ |
出力結果は 2012-03-02 ですが、論理的には 2012-02-31 になるはずです???? 2 月に 31 日はありますか? いや、30 日はありますか?これは…
PHP はこの状況を処理し、数日余分に与えて、翌月に基づいて計算します。
2012 年 2 月の最終日は 2012-02-29 なので、31 日は 29 日より 2 日長いため、PHP は処理のために次の月 (2012-03-02) に加算します。
ほとんど忘れていました...それでは、曜日をどのように計算するのでしょうか?それを行う必要はありません...PHP が用意してくれました。
date('w',$strtime); 出力は曜日です。
コードをコピー | |
/**
※前月の今日を計算します。前月に今日がない場合は前月の末日を返します
return date("Y-m-t H:i:s", $last_month_time); を返します。
}
|