閉じる
  1. TL-SG108E購入
  2. PPPoEサーバー構築(CentOS 7.4)
閉じる
閉じる
  1. 久々の投稿
  2. ZK-80
  3. GPD Win4を使ってみて
  4. 参照されたアカウントは現在ロックされているため、ログオンできない可能性…
  5. GPD Win4到着しました。
  6. GPD WIN 4出荷開始!
  7. Radius Guard Sバージョンアップ
  8. Let’s Encrypt 証明書更新
  9. 幼児のご飯 大量生産
  10. amazon lightsail
閉じる

yk-style-blog.com

PHP 日付変更の罠( ノД`)シクシク…

new DateTime(‘now’)で宣言してから先月、先々月の日付けをmodifyで変更し、日付のフォーマットは「YYYY/MM」で取得していました。しかし今日そのスクリプトを実行するとなんだかおかしい……。

今月:2022-05 ←正しい

先月:2022-05 ←おかしい

先々月:2022-03 ←正しい

コードとしてはこんな感じです。

$MonthBeforeLast = new DateTime('now'); //先々月
$LastMonth       = new DateTime('now'); //先月
$ThisMonth       = new DateTime('now'); //今月

$MonthBeforeLast->modify('-2 months'); //先々月
$LastMonth->modify('-1 months');       //先月

$Exec_MonthBeforeLast = $MonthBeforeLast->format('Y-m-01'); 
$Exec_LastMonth       = $LastMonth->format('Y-m-01');
$Exec_ThisMonth       = $ThisMonth->format('Y-m-01');

$output_MonthBeforeLast = substr($Exec_MonthBeforeLast, 0, 7);
$output_LastMonth       = substr($Exec_LastMonth, 0, 7);
$output_ThisMonth       = substr($Exec_ThisMonth, 0, 7);

原因が分からずdumpしてみるなんと

object(DateTime)#1 (3) { ["date"]=> string(26) "2022-03-31 16:17:12.331822" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }
object(DateTime)#2 (3) { ["date"]=> string(26) "2022-05-01 16:17:12.331829" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }
object(DateTime)#3 (3) { ["date"]=> string(26) "2022-05-31 16:17:12.331831" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }

5/31の1カ月前の日付けが4/30じゃなく5/1になっている!!そうか4/31がないから5/1になっているのか…。気が付かないよ。そんなの( ノД`)シクシク…

関連記事

  1. インターンの受入準備

  2. 新宿 横浜らーめん 山本家

  3. 幼児のご飯 大量生産

  4. PLAY EARTH PARK, TOKYO MIDTOWN

  5. 本日のちょっと一息

  6. 3Dヘッドマウン「ENMESI」使用感

おすすめ記事

  1. TL-SG108E購入
  2. PPPoEサーバー構築(CentOS 7.4)

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

ページ上部へ戻る