お世話になります。
strtotime を使って下記のように前月・前々月の表示をさせています
ーーーーーーーーーーーーーーーー
<?php
for($i = -2 ; $i <= 0 ; $i++){
$year = date("Y",strtotime("$i month"));
$month = date("m",strtotime("$i month"));
print $year . "年" . $month . "月<br>";
}
?>
ーーーーーーーーーーーーーーーー
7月31日にその表示をさせたら
2007年05月
2007年07月
2007年07月
と表示されてしまいました。
今月(8月)に入ってからは
こちらの意図するとおりの表示に戻っていました
何か strtotime の使い方等間違っているのでしょうか?
ご指導、宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
詳しいことは分かりませんが、2007-07-31 の -1 month は 2007-07-01 のようです。
2007-06-31 は存在しないので 2007-07-01 になるんじゃないでしょうか。
月日を取得したいだけならmktimeが確実かと思います。
for ($i = -2 ; $i <= 0 ; $i++) {
$time = mktime(0, 0, 0, date('m')+$i, 1, date('Y'));
$year = date("Y", $time);
$month = date("m", $time);
print $year . "年" . $month . "月<br>";
}
ありがとうございます
-1 monthは30日引いた日付と一緒なんですね
それでいくとstrtotimeの使い道が狭まってしまいますね><
mktimeでの方法まで記述いただきありがとうございます
そちらの方法で手直ししていきます
ありがとうございました
No.2
- 回答日時:
仕様にそった動作ではないかと思います。
7/31から、-1Month とすると、6/31になりますが、実際にはそういう日付は存在しません。
Date関数はこういう存在しない日付の場合、実際の日付に換算しますので、6/31→7/1と変換した上で、フォーマットを適用したのだと思います。
#たぶん、前月が小の月で、当月が大の月の31日には、症状が再発するのではないでしょうか?(3,5,7,10,12月)
月までの表示でよいのであれば、当月の1日を基準とした動作をするように直せばよいと思います。
例えば
date("m", mktime(0, 0, 0, 1, date("m")-1, date("Y")));
といった様な表記であれば、問題ないかと思います。
回答ありがとうございます
仕様なんですね・・・
ある意味間違った使い方をしているのだと知りました
mktimeを使って修正します
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/04/13 10:55
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- Access(アクセス) 対象月の2桁表示について 1 2023/01/07 05:08
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
開始と終了を指定して、その間...
-
差分の月数を算出する方法
-
1ヶ月後の日付を出力したい
-
アップロードしたファイル名に...
-
現在時刻をyyyymmddhhmmss形式...
-
ファイル名に日付の挿入
-
C言語でシステム日付との差を...
-
phpで日付チェックをしたいので...
-
C言語を使って、ある特定の日の...
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
shシェルスクリプト 空白行の...
-
wordの差し込み印刷で文字...
-
phpでcookieがうまく保存されない
-
バッチファイルで、全てのウィ...
-
switch()文で値の大小比較
-
VBA コレクションに2次元配列...
-
DTOとEntityの差は何ですか。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
現在時刻をyyyymmddhhmmss形式...
-
PHP 指定した期間だけ表示した...
-
PHPでn日後を計算したい
-
C言語を使って、ある特定の日の...
-
差分の月数を算出する方法
-
日付によって画像を変える
-
C言語でシステム日付との差を...
-
昨日の日付名でファイルを作成...
-
Accessコンボボックス
-
一週間の表示の仕方と文字表示
-
strtotime 前月・前々月の表示
-
MovableTypeで、ある日付を過ぎ...
-
月曜日から始まる週間カレンダ...
-
MS-DOSコマンドのリダイ...
-
アップロードしたファイル名に...
-
ASPでの日付の取得について
-
Accessで、DAOでAddnew
おすすめ情報