• ベストアンサー

一ヶ月前の月を表示させたい!

いつもお世話になっています。 今回date関数で引っ張ってきた「m」(month)を、 一ヶ月前の表示にさせたくて困っています。 ソースはこんな感じです。 --ここはちゃんと出ます。 $today = date("Y-m-d"); --print結果  2007-12-07←この形で、一ヶ月前に表示させたい。 --これでいけると思ったんですが、、、 $before = strftime("%F", strtotime("-1month")); --print結果   何も出ない。strftime関数はphp5.2.4は対応していないんでしょうか(?。?);4.4.6ではこれで通ります。 --苦肉の策でこんなのも作ってみましたが、 $current_year = date("Y"); $current_month = date("n"); $current_day = date("d");      $hiki = ($current_month-1);      $before = date("Y-$hiki-d"); --print結果   2007-11-07(しかし、これはただ12と言う数字から-1しただけなので、来年の1月になると、2008-0-1)となってしまいます。これは是非回避したい。 質問まとめ php5.2.4で通る 例 $today = date("Y-m-d"); の一ヶ月前の表示方法を、知りたい。 大変恐縮ですが、 どなたか、知識をお持ちの方、是非ご指導ください。

  • PHP
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

echo date('Y-m-d') . '<br />'; echo date('Y-m-d', mktime(0, 0, 0, date('m') - 1, date('d'), date('Y'))) . '<br />'; -1 month は30日前とかだったような・・?

se-nabe
質問者

お礼

お礼が遅くなってすいません。 今会社ではないので、結果報告できませんが、 早速のご回答ありがとうございます。 また何かありましたら、 ご指導していただければ幸いです。

その他の回答 (3)

  • ma2shin
  • ベストアンサー率41% (69/167)
回答No.4

タイムスタンプで現在の値より30日引いて再度、日付の形で取得してあげれば可能です。 $today=mktime(0,0,0,date("m"),date("d")-30,date("Y")); $oldday=date("Y-m-d",$today); echo $oldday;

se-nabe
質問者

お礼

ご回答ありがとうございます。 先日皆様から頂いたアドバイスにて、 一ヶ月前の表示が出来ました。 大変感謝しています。 また何かありましたら、 是非ご教授ください。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

PHP 5のマニュアルでは、 strftime("%F" %F というパラメーターは存在しないようですけど??使うなら "%x" の方でしょうか? または date("Y-m-d", strtotime("-1 month"));

参考URL:
http://php.benscom.com/manual/ja/function.strftime.php
se-nabe
質問者

お礼

お礼が遅くなりましてすいません。 月曜日に会社で是非やってみます。 また何かありましたら、ご指導いただければ、 幸いです。

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

#1, また適当なことを書いてしまいました。 最後のは忘れてください。

関連するQ&A

  • PHPでカレンダー

    PHPを使ってカレンダーを作成しました。が、コードの意味が良く分かりません。 コードは以下の通りです。 <?php if($_GET['num']==''){ $today_year = date("Y"); //4桁の西暦年 $today_month = date("n"); //1~12の月 }else{ $timestamp = mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year = date("Y",$timestamp); $today_month = date("n",$timestamp); //1~12月 } $current = mktime(0,0,0,$today_month,1,$today_year); $first_day = date("w",$current); //1日の曜日を0~6に当てはめる $last_day= date("t",$current); //月の日数 ?> <html> <head> <title>カンレンダー</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <h1><?php print (date("Y年m月",$current)); ?>のカレンダー</h1> <table border="1" cellpadding="0" cellspacing="2"> <tr> <th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th> </tr> <?php for($i=1; $i<=$first_day+$last_day; $i++){ if($i%7==1){print ("<tr>");} if($i>$first_day){ print ("<td>".($i-$first_day)."</td>"); }else{ print ("<td>&nbsp;</td>"); } if($i%7==0){print ("</tr>");} } ?> </table> </body> </html> for以降の部分が良く分かりません。よろしくお願いします。※上記のスクリプトで正しく表示されることは確認済です。

    • 締切済み
    • PHP
  • 万年カレンダーについて

    万年カレンダーについて質問します。例えば、11月10日(月)が休みとした場合に11月10日(月)セルの背景を赤色にする方法を教えて下さい。下記のプログラムに加える記述方法を教えて下さい。 <?php if($_GET['num']==''){ $today_year =date("Y"); $today_month=date("n"); }else{ $timestamp=mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year =date("Y",$timestamp); $today_month=date("n",$timestamp); } $current=mktime(0,0,0,$today_month,1,$today_year); $first_day=date("w",$current); $last_day=date("t",$current); ?> <html> <head> <title>万年カレンダ</title> </head> <body> <h1 style="background:#cccccc"> <?php print(date("Y年m月",$current)); ?>のカレンダ</h1> <table border="1" width="300"> <tr> <th>日</th><th>月</th><th>火</th><th>水</th> <th>木</th><th>金</th><th>土</th> </tr> <?php for($i=1;$i<=$first_day+$last_day;$i++){ if($i%7==1){print("<tr>"); } if($i>$first_day){ print("<td>".($i-$first_day)."</td>"); }else{ print("<td>&nbsp;</td>"); } if($i%7==0){print("</tr>");} } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • PHPで指定した日付の1ケ月前表示

    MySQLにある日付を拾ってきて表示しています。 <?php echo $row_target_date['ap_date']; ?> 上記のPHPでは、MySQLのテープルのap_dateカラムにある日付を拾ってきて表示するようにしています。 この1ケ月前を表示したいと考えています。 <?php echo "1月前:" . date("Y/m/d",strtotime("-1 month" ,strtotime("echo $row_target_date['ap_date']"))) . "<BR>"; ?> では表示できませんでした。 表示方法についてご指導いただきたくお願い致します。

    • ベストアンサー
    • PHP
  • 変数で来た指定日に対して、+3ヶ月、+6ヶ月、+12ヶ月を計算する方法

    変数で来た指定日に対して、+3ヶ月、+6ヶ月、+12ヶ月を計算する方法が知りたいです。 こんな感じで、当日に対して+する事は知っているのですが echo "1週間後 = " . date("Y/m/d",strtotime("+1 week")); echo "1ヶ月後 = " . date("Y/m/d",strtotime("+1 month")); echo "1年後  = " . date("Y/m/d",strtotime("+1 year")); 当日ではなく、変数できた指定の年月日に対して足す方法が解らなくて困っています。 $data03 = "2010-10-01"; //$data04 = strtotime("+3 month",$data03); $data04 = strtotime($data03,"+3 month"); //$data04 = $data03 + strtotime("+3 month"); echo '3ヶ月後:'.$data04.'<br />'; 結果 3ヶ月後:1285858800 strtotime関数のマニュアルは見ましたが良くわかりません… まったく違う方法でも良いのでお願いします。 いろいろ検索しましたが、当日からの計算方法しか見付かりませんでした。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • エクセル セルが空欄の時は何も表示したくないのですが・・・

    助けてくださーい! =IF(DATE(YEAR(D22),MONTH(D22),1)<=DATE(YEAR(TODAY()),MONTH(TODAY())+2,1),"期限間近","") 免許証の有効期限が2ヶ月前の場合「期限間近」と表示されるようにしました。 ところが・・・ 有効期限欄が何も入ってない時も「期限間近」とじされてしまいます。 セルが空欄の時は何も表示しないようにするには何を追加すればよいのでしょうか?? おわかりの方教えてくださーい!

  • strtotime 前月・前々月の表示

    お世話になります。 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 の使い方等間違っているのでしょうか? ご指導、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 日付表示に関する質問です。

    仮にA1のセルに月の数字「2」と入れた時に、A2~のセルに2月の日付が自動更新されるような関数を他の質問者への回答(下記表記)で一応処理出来ました。 =IF(MONTH(DATE(YEAR(TODAY()),$A$1,ROW()-1))=$A$1,TEXT(DATE(YEAR(TODAY()),$A$1,ROW()-1),"m/d"),"") ここで質問なのですが、表示させる"m/d"の状態であれば月の日数分(28or29or30or31)のみの表示でうまく切れるのですが、"m月d日"とすると正式な日数分を超え(例えば30日の月であれば次の月の1日が入る)て入ってしまいます。 これは何故なのでしょうか? また、"m月d日"の形で上記を修正表示する事は可能でしょうか? 当方、関数自体もさほど使った事がなく、限りなく初心者に近いので、分かりやすく教えて頂ければ幸いです。 どうぞよろしくお願いいたします。

  • 土日をカウントしない日付表示

    PHPで日付の表示方法で困っています。 今日から3日後の日付を表示するときに土日を含まないで表示させたいのです。本日12日ですので17日が表示されるようなPHPをご教授いただきたいです。 <?php echo date("m月d日",strtotime("+3 day"));?> だと単純に3日後ですし、 <?PHP $day = 60 * 60 * 24; $t=mktime(0,0,0,date("m"),date("d")+3,date("y")); if(date("w",$t)==6) $t += $day * 2; if(date("w",$t)==0) $t += $day ; echo date("m月d日",$t); ?> だとしても土日をカウントしているので、思うような結果に至っておりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • C言語 実行エラー 10000日先が表示されない 

    今10000日先後の年、月、日を求めていて下のプログラムを 考えたんですけど、コンパイルは通るんですが結果がうまくいきません↓ どこがおかしいですか? #include<stdio.h> int leapYear(int); int Date(int,int,int,int); int main(void){ int year,i=0,month,date,date2=10000,emp=0; printf("年>>"); scanf("%d",&year); printf("月>>"); scanf("%d",&month); printf("日>>"); scanf("%d",&date); Date(year,month,date,date2);//date2から各月の日数を引いていく printf("year=%d month=%d date=%d date2=%d \n",year,month,date,date2); return 0; } int leapYear(int year){ //うるう年を求める if(year%400==0){ return 1; } else if(year%4==0 && year%100!=0){ return 1; } else return 0; } int Date(int y,int m,int d,int d2){ for(;;y++){ if(d2<0) return y,m,d,d2; for(;m<=12 || d2>=0;m++){ if(leapYear(y)==1){ if(m==4||m==6||m==9||m==11){ d2-(30-d); } else if(m==2) d2-(29-d); else d2-(31-d); } else if(m==4||m==6||m==9||m==11){ d2-(30-d); } else if(m==2) d2-(28-d); else d2-(31-d); } } }

  • ActionScriptで1ヶ月前の日付や数日前の日付を得たい

    ActionScript2.0を使って日付を利用したグラフを作成しております。 X軸とY軸があり、X軸を日付で使います。 一ヶ月前から本日までの日付を目盛りに表示したいのです。 今日の日付は以下のようにしたら取得できると思うのですが、 //本日 var this_d = new Date(); today_date.text = (this_d.getMonth()+1) +"/" + this_d.getDate(); 一ヶ月前、25日前、20日前、のように特定の月と日を簡単に出力する方法がわかりません。 PHPやPerlではタイムスタンプから日付に戻せると思いますが、actionScriptでもそういった方法があれば便利かなとおもいましたが・・・ 恐れ入りますがご教授ください。

    • ベストアンサー
    • Flash

専門家に質問してみよう