• ベストアンサー

処理年月の取得

UNIX Pro-Cにて、前月の処理年月を取得する方法 を教えてください。 例えば、2007年3月10日に実行すると、'200702'になります

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

Pro-Cってのは知りませんが、標準的なライブラリが使えるとして、 time_t timer; struct tm *today; time(&timer); today = localtime(&timer); で、 today->tm_mon に、*現在の月-1* (3月なら2) が入っているので、 tm_mon が 0(つまり1月)なら年も調整して出力 それ以外なら tm_mon-1 を出力 でいいんじゃないでしょうか? today->tm_mon--; strftime(strbuf, "%Y%m", today); で、うまくいくかもしれませんし、征かないかも知れません。

yano-kouichi
質問者

お礼

うまくいきました。 ありがとうございました。

yano-kouichi
質問者

補足

回答、ありがとうございます。 こんな感じでいけるでしょうか? int main() { char year; char mon; char syori; /************************************/ /* 処理年月設定 */ /************************************/ time_t timer; struct tm *today; /* 現在時間取得 */ time(&timer); /* 現在時刻を構造体に変換 */ today = localtime(&timer); /* 1桁の月の場合、2桁にする */ if( today->tm_mon < 10) { mon=strcat(0,today->tm_mon); } /* 1月の場合は去年にする */ if( today->tm_mon == 0) { year=today->tm_year-1; }else if{ year=today->tm_year; } shori=strcat(year,mon); }

関連するQ&A

  • ある年月の前月(月の開始日)を取得する方法を教えて下さい。

    ある年月から、その前月(月の開始日)を取得する方法を教えて下さい。 例えば、「2003年7月」の前月は、「2003年6月」ですが、 その月の開始日「2003年6月1日」を取得する方法を教えて下さい。 「2003年7月」を表すDate型オブジェクトを引数にして、 「2003年6月1日」を取得したいです。 言語はJavaです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • エクセルで処理日によって表示月を変えたい

    エクセル表で200×年○月、と表示させたいのですが 処理日が1~15日だと前月、16~31日までだと当月を表示させるには どうすれば良いでしょうか。 初歩的な質問ですみません。。 よろしくお願い致します。

  • 年、月、日を取得する関数

    ストアドプロシージャで現在日付を取得するには GETDATE() を使いますが、年、月、日をそれぞれ取得したいのですがその方法(関数?)がわかりません。 また、取得した年、月、日は項目(Smallint)に書き込みます。 以上、よろしくお願いします。

  • 別シートにあるその月の最大値を取得したい。

    次のような処理を考えています。   A    B     (シート1) 2001/1/1 10000 2001/1/2 13000   :   : 2001/1/31 25000 2001/2/1 28000   :   : B列は累計値です。(つまり、月末日がその月の最大値です。) ここで、シート2からシート1の毎月末の値を取得したいと思っています。 以下は例です。   A   B   C 2001年  1月   2月  ・・・   (シート2) 最大値 25000  ??? つまり、A1の年とB1の月と合致するシート1の月末日の値を、B2に取得 したいのです。(この例では2001/1/31の値が取得したい。) VLOOKUPとMAXを組み合わせてなんとか、と思いましたが、いい方法が 思い浮かびません。何か方法はあるでしょうか? (ワークシート関数だけで解決できるでしょうか?)

  • 入力された年月からその月の末日を取得する

    import java.util.*; class Sample { public static void main(String[] args) { System.out.println(args[0]); Calendar cal = Calendar.getInstance(); cal.set(2000,1,1); int y = cal.get(Calendar.YEAR); int m = cal.get(Calendar.MONTH) + 1; int last = cal.getActualMaximum(Calendar.DATE); System.out.print(y + "年" + m + "月の末日は "); System.out.println(last + "日です"); } } で、2000年2月の末日を取得することが出来るのはわかったのですが プログラム上で年月の入力を促してその月の末日を取得するにはどうすればいいのでしょうか? (プログラム実行例) C:\JAVA\SAMPLE>java Sample 2009 2 2009年2月の末日は 28です ↑のようにプログラム上で年 月を入力して実行し、末日を取得したいのですが・・・ 多分この場合、入力数値などに対する例外処理や閏年の処理などもやらないとダメだと思いますがよくわかりません

    • ベストアンサー
    • Java
  • 資格取得年月について

    自分が取得した資格取得の年はわかるのですが、月を余りはっきり覚えていなくてどう調べていいのか、わからなくて困ってます。 取得した際の賞状等も随分前の事なのでなくしてしまいました。 何か調べる方法があれば教えて下さい。お願いします。

  • 取得年月について教えてください。

    今、医療事務を目指して勉強しています。 そして医療事務の仕事をするために就職活動をしようと思って履歴書を作成中なのですが、資格・免許取得欄で行き詰ってしまいました。 医療事務の資格を取得するために、平成19年10月に試験を受ける予定です。履歴書に医療事務の資格を取得見込みとして書きたいのですが、この場合の取得年月は何年何月になるのでしょうか。 お分かりになる方がいらっしゃいましたら、教えてください。

  • C#で指定した月の最後の日を取得する方法

    お世話になります。 C#(.net2.0)で指定した年、月の最後の日を取得する方法はどのようにしたら良いのでしょうか? 例えば2008年の2月は「29」のように。 よろしくお願い致します。

  • Javaで年月の取得(YYYYMM形式で)

    Javaで“前月”の年月(YYYYMM形式)を取得するロジックを組んだのですが、 以下のコードを実行すると、前月の月が1桁の場合に、「YYYYM」(5桁)の形式になってしまいます。 (元がintなので当然かも知れませんが。) Calendar calendar = Calendar.getInstance(); String yearMonth = String.valueOf(calendar.get(Calendar.YEAR)) + String.valueOf(calendar.get(Calendar.MONTH) - 2); こちら、解決する方法はありますでしょうか? ※他に気掛かりな点としては、2012年の1月に実行した時に、正しく「201112」を返してくれるか、というのもあります。 また、別の実装方法として、以下の場合は「YYYYMM形式」で取得出来るのですが、 “前月”に変換する方法が分かりませんでした。。。 Calendar calendar = Calendar.getInstance(); String yearMonth2 = new SimpleDateFormat("yyyyMM").format(calendar.getTime()); ロジックはシンプルである方が助かります。 分かる方、教えて下さい!

    • ベストアンサー
    • Java
  • 1/29に来月取得プログラムを実行すると「3月」と返ってくる

    1ヶ月後の「年月」を取得するプログラムを作ったのですが、本日1/29に実行すると2009年3月という年月情報が返ってきます。 2月29日という日付が存在しないからだと思うのですが、これの対策として簡単でスマートな方法をご存知の方がおられましたらご教授頂きたいと思います。 ※プログラムは以下のように記述しています。 $nextmonth = date('Ym', strtotime('+1 months')); 1/29~1/31に実行しても $nextmonth が「200902」と返ってくる方法を教えて下さい。

    • ベストアンサー
    • PHP

専門家に質問してみよう