PHPの時刻関数strtotime()関数の原理の説明

不言
リリース: 2023-04-03 16:38:02
オリジナル
2342 人が閲覧しました

この記事では、PHP の時間関数 strtotime() の原理を紹介します。これには一定の参考値があります。必要な友人は参照してください。お役に立てれば幸いです。

strtotime を -1 か月、1 か月、来月と組み合わせるとよく混乱し、この関数は少し信頼性が低く、あらゆる場面で問題が発生する可能性があると感じます。非常にパニックです...

いいえ、誰かがもう一度私に尋ねました:

// 今天是2018-07-31 执行代码:date("Y-m-d",strtotime("-1 month"))// 怎么输出是2018-07-01?
ログイン後にコピー

わかりました、この質問は混乱しているように見えますが、内部ロジックからすると、実際には「正しい」です。心配しないでください、ゆっくり説明しましょう:

この種の日付の内部処理ロジックをシミュレートしましょう:

1. 最初に -1 か月を実行し、その後、現在時刻は 07-31 になります1 を引くと、06-31.

2 になります。6 月には 31 日がないため、日付の正規化を再度実行します。そのため、2:60 が 6 月 31 日の 3:00 に等しいかのようになります。 7 月 1 日と同じです
ロジックは非常に「明確」ですか? 次のような 2 番目のステップを手動で検証することもできます:

var_dump(date("Y-m-d", strtotime("2017-06-31")));// 输出2017-07-01
ログイン後にコピー

つまり、大月と小月の最終日が関係する限り、これがある可能性があります。混乱しています、私たちも同様です。同様の他の月も簡単に検証でき、この結論を確認できます:

var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));// 输出2017-03-03
var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));// 输出2017-10-01
var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));// 输出2017-03-03
var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));// 输出2017-03-03
ログイン後にコピー

何をすべきですか?

PHP5.3 以降、明確にするために date に一連の修正フレーズが追加されました。この問題は「最初の日」と「最後の日」です。つまり、日付が自動的に「正規化」されないように制限できます。

var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));//输出2017-02-28
var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));////输出2017-09-01
var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31"))));////输出2017-02-01
var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31"))));////输出2017-02-28
ログイン後にコピー

つまり、5.3 より前のバージョンの場合 (まだ使用している人はいますか? ?)、mktime などを使用して、すべての日を無視することもできます。たとえば、毎月 1 日に限定することもできますが、初日を直接使用するほどエレガントではありません。

さあ、内部原理を理解すれば、もう慌てることはありません?

おすすめ関連記事:

isset() 関数と関数の機能の分析と簡単な分析php Compare の empty() 関数

#php 配列関数の操作は何ですか? PHP配列関数の応用(コード付き)

以上がPHPの時刻関数strtotime()関数の原理の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!