ホームページ  >  記事  >  バックエンド開発  >  前月の今日の問題の PHP strtotime 計算 - PHP チュートリアル

前月の今日の問題の PHP strtotime 計算 - PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:43:23927ブラウズ

今日は、PHP strtotime で今日の前月を計算する問題の解決策を編集者が紹介します。今日の前月の計算で問題が発生した場合は、参考として参照してください。

PHP、先月

strtotime には小さな問題があります

コードは次のとおりです コードをコピー

> php -r”echo date(‘Ymd000000’,strtotime (‘-1 ヶ月’, strtotime (’201307310000’));”
20130701000000#
> php -r”echo date(‘Ymd000000’,strtotime (‘-1 ヶ月’, strtotime (’201308010000’));”
20130701000000#

検索後、次の方法がより正確です

コードは次のとおりです コードをコピー

$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){
$strtime=mktime(date('h',$time),date('i',$time),date('s',$time),date('m',$time)-1,date(' d',$time),date('Y',$time));
エコー日付('Y-m-d',$strtime);
}
last_month_day(strtotime("2012-03-31"));


出力結果は 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); 出力は曜日です。

コードは次のとおりですコードをコピー
/**

※前月の今日を計算します。前月に今日がない場合は前月の末日を返します
* @param タイプ $time
* @戻り値の型
​*/
関数 last_month_today($time){
$last_month_time = mktime(date("G", $time), date("i", $time),
date("s", $time), date("n", $time), 0, date("Y", $time));
$last_month_t = date("t", $last_month_time);

if ($last_month_t < date("j", $time)) {

return date("Y-m-t H:i:s", $last_month_time);
}

date(date("Y-m", $last_month_time) . "-d", $time);

を返します。 }

エコー last_month_today($time);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633186.html技術記事今日は、前月の今日の問題のPHP strtotime計算の解決策を編集者が紹介します。前月の今日のデータを計算する際に問題が発生した場合は、参考にしてください。 PHP、先月...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。