質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1995閲覧

Calendarクラスについて

n000n00

総合スコア25

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/11/27 10:22

getメソッドのDAY_OF_WEEKは何を基準に曜日を返しているのでしょうか。

あるサンプルのソースで

Java

1class testCalendar1{ 2 public static void main(String args[]){ 3 Calendar calendar = Calendar.getInstance(); 4 5 int year = calendar.get(Calendar.YEAR); 6 int month = calendar.get(Calendar.MONTH); 7 int day = calendar.get(Calendar.DATE); 8 9 System.out.print("本日の日時は"); 10 System.out.println(year + "年" + (month + 1) + "月" + day + "日"); 11 12 /* 今月が何曜日から開始されているか確認する */ 13 calendar.set(year, month, 1); 14 int startWeek = calendar.get(Calendar.DAY_OF_WEEK); 15 System.out.println("今月の曜日は" + startWeek + "から"); 16 calendar.set(year, month, 1); 17

で取得しているのを確認したのですが、よく理解ができません。
上記のソースですと、
2016年10月1日からの曜日を返しているように思えてしますのですが、
その部分が理解できません。

初歩的な質問ですが、ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

日曜日が1,月曜日が2,火曜日が3とすると
今月の曜日は3からと表示されるので
2016年11月1日(火)からの曜日を返していると思います

投稿2016/11/27 10:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n000n00

2016/11/27 10:43

ご回答、ありがとうございます。 そうしますと、上記のソースでいうと月はdefaultのセットで、 DATEの引数を1でセットすれば、今月の曜日の始まりを返していると考えて良いでしょうか。
退会済みユーザー

退会済みユーザー

2016/11/27 10:46

calendar.set(年, 月, 日); int startWeek = calendar.get(Calendar.DAY_OF_WEEK); で設定した年、月、日の曜日を数値で返すと思うので calendar.set(今年の年, 今の月, 1); としたら int startWeek = calendar.get(Calendar.DAY_OF_WEEK);で 今年の今月の1日の曜日を数値で返すのではないでしょうか
n000n00

2016/11/27 11:01

何度もすみません。 calendar.set(今年の年, 今の月, 1); とすると、calendar.get(Calendar.MONTH);で得られる値(10)で良いと考えていいでしょうか。
n000n00

2016/11/27 11:02

すいません。 (今の月)が何を指しているか理解できなくて。
退会済みユーザー

退会済みユーザー

2016/11/27 11:06 編集

int month = calendar.get(Calendar.MONTH);は多分、今月より一つ小さい値を返すのでしょう だから System.out.println(year + "年" + (month + 1) + "月" + day + "日"); ではmonth+1している Calendar calendar = Calendar.getInstance();でcalenderにはまぎれもなく現在の日時が入っているが 取り出すとき、月だけはint month = calendar.get(Calendar.MONTH);して取り出したとき 現在の月より一つ小さい値を返す(添字が0から始まるのと同じような理屈ではないかと思います)だけだと思います だから 今の月に入っているのは、というか入れるべきは11です
n000n00

2016/11/27 11:27

ご回答ありがとうございます。 丁寧にご教授いただき、助かりました。
swordone

2016/11/27 11:38

待って下さい。今の月の値は10です。11にすると12月を表します。
退会済みユーザー

退会済みユーザー

2016/11/27 11:40 編集

あっ本当でした 間違いです そのまま入れたのでいいです +1にして代入するのは間違いでした 今の月に入れるべきは10です 表示する時に+1して表示させると今月になるという話でした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問