- - PR -
翌月の算出方法
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-07 16:13
文字列で年月があり、その年月の翌年月を算出したいのですが、簡単に行う方法
はございますでしょうか? (例) String tounengetu="2004/07" ↓下記に変換 tounengetu="2004/08" 元の年月が12月の時は年もUP String tounengetu="2004/12" ↓下記に変換 tounengetu="2005/01" Calendarクラスを調べたのですが、どのメソッドをどのように使用すればよいのか わからず、困っています。 JAVA初心者です。 ご存知の方、ご教示頂けますようにお願いします。 [ メッセージ編集済み 編集者: いち 編集日時 2004-07-07 16:15 ] | ||||||||||||
|
投稿日時: 2004-07-07 16:22
そもそも、まずこの「文字列で表された年月」をどのようにjava.util.Calendarに変換されるおつもりでしょう? もし具体的な方策が思いつかないのでしたら、ヒントをば。 抽象クラスjava.text.DateFormat及びその具象サブクラスであるjava.text.SimpleDateFormatクラスを見てみましょう。DateFormat#parse(String)を使うとjava.util.Dateが取得できますが、これをjava.util.Calendarに変換するのは簡単です。 Calendarオブジェクトが取得できたら、後は年と月を取得して適当にお望みの処理を行ってやれば良いですよね。年と月の取得は、java.util.Calendar#get(int)によって可能です。取得した値は数値ですから、比較や加算は思いのままですよね? 最後に、CalendarをStringに戻すのにもjava.util.DateFormatを使います。今度はparseではなく、formatメソッドが使えますよ。一度java.util.Dateを経由しますが、それほど難しくありません。 敢えて答えを書かずに回りくどく書きましたが、まずはJ2SEのJavadocを見てアタリをつけてみて下さいまし。 Good Luck ! # 念のため。。。J2SE 1.4.0の日本語版Javadocは以下にあります。 # http://java.sun.com/j2se/1.4/ja/docs/ja/api/ # もし他のバージョンが良いのでしたら、SunのJavaサイトから辿って下さいまし。 # http://java.sun.com/ [ メッセージ編集済み 編集者: おばけ 編集日時 2004-07-07 16:27 ] | ||||||||||||
|
投稿日時: 2004-07-07 17:10
もしyyyy/MMときまっているのであれば
Calendar#public void set(int field,int value) をつかうってのはどうですか? 適当に書くとこんなかんじで <code> public static String getNextMonth(String date) { Calendar cal = GregorianCalendar.getInstance(); cal.set(Calendar.YEAR, Integer.parseInt(date.substring(0, 4))); cal.set(Calendar.MONTH, Integer.parseInt(date.substring(5))); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM"); return sdf.format(cal.getTime()); } </code> [ メッセージ編集済み 編集者: わたびん 編集日時 2004-07-07 17:24 ] | ||||||||||||
|
投稿日時: 2004-07-07 18:07
ども。
え〜と、、Calendarに変換したら、Calendar#add(int, int) を使えば済むのでは。 わたびんさんの変数をそのまま使わせてもらって、、
Calendar#add使わなくても、Calendar#set(int, int)ででも可能だから、 またまた、わたびんさんのお借りして、、
で、できると思うんだが、、どうでしょう?
すいませんです、簡単に答えてしまいました。。 ただ、おばけさんの言う通り、まずはJavadoc見て、アタリをつけてそれらしいの見つけたら 使ってみるってのがいいですね。 追記: なんか、Calendarクラスを使うのが前提なのかどうかしらんが、単に翌月なら 年と月を分割して、月が12だったら年を+1して月を1に、それ以外なら月を+1 すれば済むような話のような気がするのは俺だけ? [ メッセージ編集済み 編集者: 格 編集日時 2004-07-07 18:16 ] | ||||||||||||
|
投稿日時: 2004-07-08 12:25
では、そんな感じで。
月が2桁先行ゼロじゃないけど。 | ||||||||||||
|
投稿日時: 2004-07-08 15:03
です。要はそういうことだと思います 私が書くとしたら、まさにおっしゃるようなコードを書くと思います。 まあ、ここでの問題って、「文字列型の年月とカレンダー型の変換」なのかなって 思いました。まだいちさんは初心者のようですから、java.text.DateFormatなんて 知らないかも、と思って示唆したまでです。 JavaはJDKのクラスライブラリを使いこなすだけでもかなり大変ですから(偉そうな ことを言っても私もぜんぜん使いこなせてません だけ伝えてあげて、あとはJavadocの海をひたすら泳いで頂くと良いのかな、と。 ところで、いちさんは行方不明のようですが、ご無事でしょうか? Javadocの海で溺れてないですよねぇ | ||||||||||||
|
投稿日時: 2004-07-08 17:09
なる、そういうことね。なんでCalendarオブジェクト作成しておきながら、 getして処理しろって言ってるんだろうってちょっと不思議に思ってた〜よ。 | ||||||||||||
|
投稿日時: 2004-07-08 19:49
まあ、rollとかも使えますけれど、ここではちょっと混乱を招くかな、 な〜んて要らん老婆心を発揮していました。よく知らないのでしたら、 とりあえずgetから入った方が良いかな、と。 ご本人がきちんと理解されるのであれば、どんな回答でもオッケーなんです けれどね | ||||||||||||
1
