java.time.DayOfWeek
ジャワ8以降はビルトインような列挙、java.time.DayOfWeek
を有しています。
ISO 8601標準では、週は月曜日から日曜日、1〜7の番号が付けられています。あなたは一般的に日曜日が最初のもので、米国で使用されるように、週たい数学を使用している場合は、米国のスタイル
にISO 8601スタイルから
int dayNumber = DayOfWeek.MONDAY.getValue() ; // 1 = Monday, 7 = Sunday.
変換。このように、次いでモジュロ7プラス1
(DayOfWeek.SUNDAY.getValue() % 7) + 1
を計算する:
System.out.println((DayOfWeek.SUNDAY.getValue() % 7) + 1) ;
System.out.println((DayOfWeek.MONDAY.getValue() % 7) + 1) ;
System.out.println((DayOfWeek.TUESDAY.getValue() % 7) + 1) ;
System.out.println((DayOfWeek.WEDNESDAY.getValue() % 7) + 1) ;
System.out.println((DayOfWeek.THURSDAY.getValue() % 7) + 1) ;
System.out.println((DayOfWeek.FRIDAY.getValue() % 7) + 1) ;
System.out.println((DayOfWeek.SATURDAY.getValue() % 7) + 1) ;
あなたの質問には、矛盾したと明らかではないので、私はあなたが日曜日、土曜日は0-6である場合は、次にあなたの目標のわからない数学の上に使用しますが、やります1つを追加しないでください。
(DayOfWeek.SUNDAY.getValue() % 7) // Sunday = 0, Monday = 1 , … , Saturday = 6.
java.util.Calendar
私はレガシーDate
/Calendar
クラスを使用することをお勧めすることはないものの
定数が、あなたの情報のため、java.util.Calendar
クラスはの日のためにint
定数(ない列挙型)のシリーズを定義しますが1
であり、次にCalendar.SATURDAY
である週が7
である週。 java.timeについて
java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date
、Calendar
、& SimpleDateFormat
など、面倒な古いlegacy日時クラスに取って代わります。
maintenance modeにあるJoda-Timeプロジェクトは、java.timeクラスへの移行を推奨しています。
詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。
ここで、java.timeクラスを取得するには?
ThreeTen-Extraプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、Interval
、YearWeek
、YearQuarter
、moreなどの便利なクラスがあります。
ローカライズされた曜日が必要です。あなたが本当にやりたいことについてもっと教えてください。 SUNDAYを '0'に、MONDAYを '1'に設定したい*とはどういう意味ですか? Java Timeを使用していますか?ジョーダ? – Tunaki
「DayOfWeek.SUNDAY」についてはどうですか?getValue()%7'? –
@Tunaki - あなたが言ったように、私は週の日のための '新しい'値を定義することによって、現地化された週にしたいです。 SUNDAYの値は「0」で、「7」ではないことが重要です。これは後で私が書いているインフラのために私に役立つだろう。 私の関数はDayOfWeek列挙型を取得し、新しい曜日の値を定義する必要があります。 – nimrod