- ベストアンサー
日付と曜日が合わない
- JavaのPGで1週間分のカレンダーを表示するためにCalendarクラスを使用していますが、曜日が正しく取得できない問題が発生しています。
- 2010年12月25日から1週間分の日付と曜日を取得するために、cal.add(Calendar.DATE, 1)を利用しています。
- しかし、実行結果を見ると、12月31日が6(土曜日)となっています。予想では7(日曜日)になるはずです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
http://download.oracle.com/javase/7/docs/api/java/util/Calendar.html#set%28int,%20int,%20int%29 >month - the value used to set the MONTH calendar field. Month value is 0-based. e.g., 0 for January. 不思議なことに月は 0→1月 1→2月 11→12月 という仕様なんです。元から。 2010年12月25日は土曜日で、7で間違っていません。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
この手の話で「月が 0~11」というときは, たいてい配列と関係がある. つまり, 月の名前を文字列で取得するときに 0~11 なら static final String[] month_name = { "January", "February", ... }; とすればいいが 1~12 だと static final String[] month_name = { null, "January", "February", ... }; と要素が 1つ余計に必要. まあ非常にせこい話だが, この仕様は少なくとも Unix にさかのぼるはずで, そのときには「使えるメモリが今に比べて格段に少ない」という事情があった.
お礼
回答ありがとうございます。 要は処理都合って事ですね・・・。
- SaKaKashi
- ベストアンサー率24% (755/3136)
cal.get(Calendar.MONTH) の結果は0から11です。つまり 2010 11 25 は 2010 12 25 なのです。
お礼
回答ありがとうございます。 とりあえず、何でだめなのかは分かりました。 自分で、日付を指定する場合は、一手間加えないといけないみたいですね。
お礼
早速の回答ありがとうございます。 つまり、Calendar.set(自分で指定した年月日)を使用する場合、 setの段階で、指定月から - 1して、 表示時には改めて + 1してから取得するということになるんですかね? なかなか面倒くさいですね・・・ でも、問題が解決しました。 ありがとうございます。