![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になります。
2つの日付を比較して、月の差を求めて、
for文でその月差分を1つめの変数に出力したいのですが、
うまくいきません。XAMPP環境です。
自分でも調べてみますが、お願いします。
------------------------------
<?php
//2007年9月と2007年12月を比較
$date1="2007-09";
$date2="2007-12";
//差分を求める
list($year1,$month1) = split('[/.-]', $date1);
list($year2,$month2) = split('[/.-]', $date2);
$year=$year2-$year1;
$month=$month2+1-$month1;
$total_month=$year*12+$month;
//for文で出力
for($k=0;$k<$total_month;$k++){
echo $k."回目のループ。<BR>";
echo $k+$date1;
}
?>
-----------------------------------
--------実行結果--------
0回目のループ。
2008
1回目のループ。
2009
2回目のループ。
2010
3回目のループ。
2011
------------------------
となってしまいます。求めたい処理は
--------理想結果--------
0回目のループ。
2007/09
1回目のループ。
2007/10
2回目のループ。
2007/11
3回目のループ。
2007/12
------------------------
です。よろしくお願いしますm(_ _)M
No.2ベストアンサー
- 回答日時:
>for文でその月差分を1つめの変数に出力したい
この文章は意味不明ですが、入力データと結果だけ満たしてみました。
ポイントは
mktime(0,0,0,12+1,1,2007)
としても 2008/01/01 を取るということかな。
$data1と$data2を逆にすると暴走するのでそのような可能性がある場合は注意。
$date1="2007-09";
$date2="2007-12";
//差分を求める
list($year1,$month1) = split('[/.-]', $date1);
$i=0;
while(1){
$t = mktime(0,0,0,$month1+$i,1,$year1);
echo $i."回目のループ。<br>\n";
echo date("Y/m",$t) ."<br>\n";
if (date("Y-m",$t) == $date2) { break; }
if ($i > 20) { break; } # 暴走した場合の安全スイッチ
$i++;
}
moon_nightさま、迅速なご回答ありがとうございます。
返事が遅れて申し訳ございません。
みなさまのお力のおかげで無事に取得することができました!
まだまだ勉強しなければならないことは多いですが、楽しいです。
本当にありがとうございましたm(_ _)m
No.3
- 回答日時:
forでまわすならこんな感じ?
<?PHP
$date1="2007-09";
$date2="2007-12";
$d_date1=strtotime($date1."-01");
$d_date2=strtotime($date2."-01");
$month1= date("Y",$d_date1) * 12 + date("m",$d_date1);
$month2= date("Y",$d_date2) * 12 + date("m",$d_date2);
for($i=0;$i<=$month2-$month1;$i++){
echo "{$i}回目のループ。<BR>";
echo date("Y/m",mktime(0,0,0,date("m",$d_date1)+$i,date("d",$d_date1),date("Y",$d_date1)))."<br>";
}
?>
yambejpさま、迅速なご回答ありがとうございます。
返事が遅れて申し訳ございません。
日付関数の使い方も勉強になりました。
本当にありがとうございましたm(_ _)m
No.1
- 回答日時:
$year_1 = 2007;
$month_1 = 9;
$year_2 = 2007;
$month_2 = 12;
$ret = array();
$ii = 0;
$limit = 100;
$flag = true;
do{
$m1=mktime(0,0,0,$month_1+$ii ,1,$year_1);
$m2=mktime(0,0,0,$month_2,1,$year_2);
$flag = $m2 - $m1 > 0;
list($year,$month) = explode(',',date('Y,m',$m1));
$ret[] = $year . "/" . $month;
$ii++;
}
while($flag and $limit > $ii);
こんな感じですかねぇ
細かい精査はして無いのでbugあるかもしれません。
wp_さま、迅速なご回答まことにありがとうございます^^
早速、解析して試してみます!
本当にありがとうございますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1ヶ月後の日付を出力したい
-
月末日判定
-
6ヶ月前の日付を取得するにはど...
-
開始と終了を指定して、その間...
-
【続】PHPとJSONについて
-
ファイル名に日付の挿入
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
excel access連携 このテーブル...
-
【C#】DataGridViewの最大列数...
-
phpでcookieがうまく保存されない
-
小数点以下0の非表示
-
ブラウザを閉じた後もセッショ...
-
format関数について
-
Excel VBA:特定の文字列以降(...
-
ミュージックのアートワークを...
-
バッチファイルでpingの結果を...
-
WordでExcelデータを差込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
PHP 指定した期間だけ表示した...
-
Accessで、DAOでAddnew
-
C言語を使って、ある特定の日の...
-
codeigniterの時間設定
-
日付計算について
-
昨日の日付名でファイルを作成...
-
現在時刻をyyyymmddhhmmss形式...
-
substrの使い方について教えて...
-
差分の月数を算出する方法
-
1ヶ月後の日付を出力したい
-
経過期間計算がうまくいかない
-
C言語でシステム日付との差を...
-
今日の日付から1週間のリスト
-
アップロードしたファイル名に...
-
strtotime 日付の変換
-
PHPでmysqlを使ってます。日時...
-
6ヶ月前の日付を取得するにはど...
おすすめ情報