No.3ベストアンサー
- 回答日時:
1を書いた者です。
もう少しよいものを書いてみました。今度はコンパイルできて動きます。試してみたところ、週の頭を計算するとき月をまたいでしまう場合でもCalendarクラスはうまくやってくれるようですよ。
import java.util.*;
public class FirstDayOfWeek {
public static void main(String[] args) {
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]) - 1;
int week = Integer.parseInt(args[2]) - 1;
System.out.println(year + "-" + (1 + month) + "-" + (1 + week * 7));
Calendar c = Calendar.getInstance();
c.set(year, month, 1 + week * 7);
int dow = c.get(Calendar.DAY_OF_WEEK);
int offset = 0;
switch (dow) {
case Calendar.SUNDAY:
offset = 0;
break;
case Calendar.MONDAY:
offset = 1;
break;
case Calendar.TUESDAY:
offset = 2;
break;
case Calendar.WEDNESDAY:
offset = 3;
break;
case Calendar.THURSDAY:
offset = 4;
break;
case Calendar.FRIDAY:
offset = 5;
break;
case Calendar.SATURDAY:
offset = 6;
break;
}
c.set(year, month, 1 + week * 7 - offset);
System.out.println(c.getTime());
int y = c.get(Calendar.YEAR);
int m = 1 + c.get(Calendar.MONTH);
int d = c.get(Calendar.DAY_OF_MONTH);
System.out.println(y + "-" + m + "-" + d);
}
}
実行例。引数は年、月、週。月と週は1から始まる。
$ java FirstDayOfWeek 2010 9 5
2010-9-29
Sun Sep 26 15:43:58 JST 2010
2010-9-26
$ java FirstDayOfWeek 2010 10 1
2010-10-1
Sun Sep 26 15:44:08 JST 2010
2010-9-26
No.2
- 回答日時:
2010年10月 第1週の場合も「26日です」という答えで良いのかな?
「9月26日です」なのかな?
2011年 1月 第1週の場合は「26日です」という答えで良いのかな?
「12月26日です」なのかな?
それとも「2010年12月26日です」なのかな?
「日付(年月日)入力から、その週の先頭の日付を表示する」だったら
入力日付(年月日)の曜日(0-6)を求め、その値を減算するのが簡単なんでしょうね。
今回の場合は選択肢の組み合わせ分のテーブルを持つほうが簡単なように思います。
No.1
- 回答日時:
こんな感じかなーと思います。
コンパイルも実行も試してないので、間違ってるところもあるかもしれませんが、ヒントとして使ってください。
year年month月week週(month, week は0から始まる)のとき週の頭day日を求めるには(day は1から始まる)
Calendar c = Calendar.getInstance();
c.set(year, month, 1 + week * 7);
int dow = c.get(Calendar.DAY_OF_WEEK);
int offset = 0;
switch (dow) {
case Calendar.SUNDAY:
offset = 0;
break;
case Calendar.MONDAY:
offset = -1;
break;
case Calendar.TUESDAY:
offset = -2;
break;
case Calendar.WEDNESDAY:
offset = -3;
break;
case Calendar.THURSDAY:
offset = -4;
break;
case Calendar.FRIDAY:
offset = -5;
break;
case Calendar.SATURDAY:
offset = -6;
break;
}
int day = 1 + week * 7 + offset;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- カードローン・キャッシング 信用情報機関CICについて。 独身時代に恥ずかしながら、ショッピング代金の引き落とし延滞が2-3ヶ月 1 2023/07/06 21:44
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- その他(Microsoft Office) Excelの色付けについて 1 2022/12/13 15:16
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- 弁護士・行政書士・司法書士・社会保険労務士 翻訳された契約書の難解な日本語 2 2023/08/09 23:41
- Excel(エクセル) 条件付書式 Sheet1からSheet2に転記した時の転記ミスを反映させたい 5 2022/05/21 09:52
- 筋トレ・加圧トレーニング 運動メニューについて 3 2023/06/06 12:35
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- 大学受験 大学入試入学手続き書類提出遅れ 私立の滑り止めを特待生で合格しました。2月24日までに特待誓約書のみ 2 2023/03/04 15:46
- Java Java、配列の問題を教えて欲しいです。 ・日、月、火、水、木、金、土 ・各曜日の英語 を2次元配列 2 2023/07/10 19:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java spring でエラーが出て困...
-
「配列定数は、イニシャライザ...
-
c# デリゲート関連の命名について
-
JAVA EOFの検出 (条件文で「...
-
【C#】フォームをなめらかに移動
-
C#で「型または名前空間名 'int...
-
javaでcsvファイル読込時の改行...
-
java streamでenum配列への変換
-
アンマネージDLLで、ダイアログ...
-
JAVA エラー 式の開始が不正で...
-
メインが含まれていません
-
JUnit4のアノテーションについて
-
String変数から数字以外を排除する
-
JTableにおけるTABイベント取得...
-
javaでカレンダー作成
-
DataSet(DataTable)の使い方
-
(Swing)JTextFieldを半角のみ入...
-
Java 初心者 int型の取り扱い方
-
JAVAでCの関数ポインタのような...
-
パソコンキーボードで時分秒を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
JAVAでCの関数ポインタのような...
-
java spring でエラーが出て困...
-
c# デリゲート関連の命名について
-
DataSet(DataTable)の使い方
-
sin曲線とcos曲線を描くプログ...
-
6桁の数字を重複なしでランダム...
-
C#で実行時にメソッドの返り値...
-
式の型は配列型で int に解決済...
-
javaでcsvファイル読込時の改行...
-
C++からC#のdllを参照する際、...
-
Stringの文字列をString[]配列...
-
Comparatorを使用したソートに...
-
JUnit4のアノテーションについて
-
SAStrutsでActionからJSPに値を...
-
前日日付の取得
-
JAVA エラー 式の開始が不正で...
-
初心者ですが、今javaで簡単な...
-
java 長さの異なる配列の代入
-
java初心者の質問(3つの整数の...
おすすめ情報