• ベストアンサー

javaで週の最初の日(例:月曜日)を求める事ができるのでしょうか?

noname#16216の回答

  • ベストアンサー
noname#16216
noname#16216
回答No.10

訂正です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=316650 に記述しましたが、No.6の回答に記述した ------ 今のように1週間単位で日付を動かしている場合には影響はないでしょうが、例えば1月1日から13ヶ月動かすと、DAY_OF_WEEKやDAY_OF_YEARなど、不変式ではない小さいフィールドは調整されないようなので、この場合には注意が必要だと思いますが。。。 ------ というのは、現状では的を外した指摘です。すみませんm(_ _)m 上記のURLでも記述しているように、getメソッドで値を取得する限り、 この条件は影響を受けないと思われます。。。 # addメソッドでカレンダーを移動するのが正しいです > Calendar cal = new GregorianCalendar(2002, 8-1, 2); > cal.setFirstDayOfWeek(Calendar.MONDAY); > int week = cal.get(Calendar.DAY_OF_WEEK);    ←1 > cal.add(Calendar.DATE, Calendar.SUNDAY - week); ←2 > System.out.println(cal.getTime()); > > このソースを実行しても、2002年7月28日(日)が出力されました。 > 自分のイメージでは2行目で、週の先頭を月曜にしたので、 > 日曜日は週の最後となり、2002年8月4日(日)が出力されると思っていました。 > > 考え方が間違っていると思うのですが、どうしてよいかわかりませんので、 > 解る事がありましたらご教授お願い致します。 考え方として間違っているのは、1の場所です。 > int week = cal.get(Calendar.DAY_OF_WEEK); としていますが、これはsetFirstDayOfWeek()で週の先頭を変更しても値は 変わりません。 というのは、週の先頭を変更しても当日(8/2)は金曜日だからです。 # setFirstDayOfWeekでは、あくまでも週の先頭となる値を指定された # ものに変更するためのメソッドであり、カレンダー自体のフィールドを # 再計算する(Calendar.MONDAY=1 に変更する)ようなものではないです。 このため、2つのコードのどちらでもweekには6(金曜日)が入ります。 こうなると、weekの値が同じなので2の位置でadd()によって計算された日付は 7/28の日曜日という結果になります。

takekun22
質問者

お礼

回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 ># addメソッドでカレンダーを移動するのが正しいです 了解しました。 >> int week = cal.get(Calendar.DAY_OF_WEEK); >としていますが、これはsetFirstDayOfWeek()で週の先頭を変更しても値は >変わりません。 >というのは、週の先頭を変更しても当日(8/2)は金曜日だからです。 ># setFirstDayOfWeekでは、あくまでも週の先頭となる値を指定された ># ものに変更するためのメソッドであり、カレンダー自体のフィールドを ># 再計算する(Calendar.MONDAY=1 に変更する)ようなものではないです。 週の先頭を変更してもカレンダー自体の再計算はされないのですね。 納得しました。 >このため、2つのコードのどちらでもweekには6(金曜日)が入ります。 >こうなると、weekの値が同じなので2の位置でadd()によって計算された日付は >7/28の日曜日という結果になります。 確かに再計算されないのでしたら、そうですよね。7/28の日曜日という結果になりますよね。 今回は本当にどうもありがとうございました。 又何かありましたら、ご教授宜しくお願い致します。

関連するQ&A

  • 週の始まりは、日曜日それとも月曜日?

    常識をお聞きするようでお恥ずかしいのですが..... よく「今週の○○曜日」という言い方をしますが、週の始まりは日曜日なのでしょうか、それとも月曜日なのでしょうか。 私は、カレンダーを見ると日曜日から始まっているため、週の始まりは日曜日だと思っていますが、それで正しいでしょうか。

  • Calendarクラスを使って次の週の月曜日を知りたい

    Calendarクラスを使い、現在日付を取得するところまではよいのですが、その日について、次の週の月曜の日付を知りたいのですが、どのようにすればよいかわかりません。 ぜひ教えてください。お願い致します。

  • 第1月曜日は第1週の月曜日かその月の最初の月曜日か

    皆さんに一般論的、社会通念的なところもからめて伺いたいのですが,第1月曜日、第2月曜日といった言葉の「第1、第2」というのは、 「カレンダー上の第1週の月曜日」でしょうか、 それとも「その月の最初の月曜日」なんでしょうか? 今月4月はキレイに日曜頭の1日始まりで誰の目にも4月2日が第1月曜日ですが、翌5月をみると、火曜日1日はじまりです。こういった場合、第1月曜日は「5月7日」であると考える人はいないのでしょうか? 理美容関係の業種等、「その月の最初の月曜日」を「第1月曜日」としてないかなぁと・・・。

    • ベストアンサー
    • Perl
  • ACCESS2000で今週の月曜日を取得する方法

    ACCESS2000で例えば今日が水曜だとすると 今週の月曜は何日かを取得する方法が わかりません。 どなたかご存知ならご教授願います。

  • ロシアで週の始まりが月曜日なのは何故?

    週の始まりが日曜日とされているのは、ユダヤ教来歴だといわれていて、キリスト教国でも一般には日曜日が週の始まりとされています(例えば↓)。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1110496641 日本の曜日呼称は、その意訳だと思うので、日本で週の始まりがいつであるかは、文化的にはあまり関係がないと思います(←これ、間違ってたら、ご指摘ください)が、キリスト教国であるはずのロシアで、月曜日“понедельник”が週の始めであるとされているのは何故なのでしょう? また、中国でも、月曜日のことを、週の始めっぽい“星期一”と言ってますが、やはり週の始めは月曜日からという感じなのでしょうか?

  • 第一月曜日

    すみません! いまさらなんですが…質問させてください。 第一月曜日というのは、月の第一週めの月曜日のこと ですか? それとも 初めの月曜日が2週目にあっても 一番最初の月曜日という意味で、第一月曜日なのでしょうか? たとえば先月 5月の4日(月曜日)は、第一月曜日なのでしょうか、 それとも第2月曜日?? 恥ずかしながら、毎月の紙ごみが第一第三月曜日と決まって いるのですが、よく分からず牛乳パックがこれでもかと、 たまっています。 いまさらなのですが、よろしくお願いします。

  • 月曜日の笑っていいとも

    月曜日のレギュラーの岸田健作さんが先週も今週もでていなかったんですが、なぜでしょうか?昨日は最初から最後まで見ていたのですが、先週は最初の辺はあまり見ていませんでした。そのときに出演者の人たちは何かいっていましたか?教えてください。

  • 月曜日はムーンデイ?

    英語の曜日の話になります、  とても気になるのですが、土曜、日曜、月曜日は、サターン(土星)デイ、サン(太陽)デイ、ムーン(月)デイ。なのだろうと思いましたが、火水木金はあてはまりません。何故でしょうか?  あと、何故この順番なのでしょうか?教えて下さい。

  • エクセルで月曜日から始まる月々の週番号

    エクセル2010利用者です。 月々の週番号(1~5)を表示する式を探しています。 月曜日が週の始まりとしたいのですが、難しい点は「前月の最後の週に新しい月が始まった場合」です。 例えば、2012年11月1日(木)であれば「週1」ではなく「週5」として表示したいです。10月29日(月)から始まる週として扱いたいです。そして11月の「週1」は「11月1日(月)」ではなく、「11月5日(月)」から始まるようにしたいです。 毎月の最初の月曜日が最初の週にする式は分かるのですが、上記の要件に合う式が見つからず… 教えて頂けると幸いです。

  • エクセル2010で週間予定表の月曜の日付を1日だけ入れると、他のセルが

    エクセル2010で週間予定表の月曜の日付を1日だけ入れると、他のセルが自動で更新されるようにしたいです。 具体的には、週のはじめの月曜である”11月1日”の”1日”を”8日”と書き換えたとき、下のセルの火曜~の欄が自動で9日~になるようにしたいのです。 少し厄介なことに、縦の日付のセルと日付のセルの間に曜日のセルが挟まっているのです。 できれば、他人の作ったこのフォーマットを崩したくないのです。 よろしくお願いいたします。