日付があり、曜日を知る必要があるため、GregorianCalendarオブジェクトを使用しましたが、間違った日付が返されます。
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);
私は何が間違っているのですか?
ありがとう!
編集ソリューション:
mont--;
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);
if(i == 2){
dayOfTheWeek = "Mon";
} else if (i==3){
dayOfTheWeek = "Tue";
} else if (i==4){
dayOfTheWeek = "Wed";
} else if (i==5){
dayOfTheWeek = "Thu";
} else if (i==6){
dayOfTheWeek = "Fri";
} else if (i==7){
dayOfTheWeek = "Sat";
} else if (i==1){
dayOfTheWeek = "Sun";
}
TimeZone timezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(timezone);
calendar.set(year, month, day, hour, minute, second);
String monthName=calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());//Locale.US);
String dayName=calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault());//Locale.US);
Joda-Time ライブラリをすべての日付/時刻関連の操作に使用します。 Jodaはロケールを考慮し、それに応じて結果を取得します。
_import org.joda.time.DateTime;
DateTime date = new DateTime(year, month, day, 0, 0, 0);
_
または
_DateTime date = DateTime().now();
_
曜日(int):
_date.getDayOfWeek();
_
toString()
および DateTimeFormat
オプションを使用した曜日(短い文字列):
_date.toString("EE");
_
myGregCal // `GregorianCalendar` is a legacy class, supplanted by the modern `Java.time.ZonedDateTime` class.
.toZonedDateTime() // Convert to `ZonedDateTime`.
.getDayOfWeek(). // Extract a `DayOfWeek` enum object, one of seven pre-defined objects, one for each day of the week.
.getDisplayName( // Automatically localize, generating a `String` to represent the name of the day of the week.
TextStyle.SHORT , // Specify how long or abbreviated.
Locale.US // Locale determines the human language and cultural norms used in localization.
) // Returns a `String` object.
月曜日
LocalDate.now( ZoneId.of( "Africa/Tunis" ) ) // Get current date for people in a certain region, without time-of-day and without time zone.
.getDayOfWeek() // Extract a `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) // Generate a string representing that day-of-week, localized using the human language and cultural norms of a particular locale.
ルンディ
古いクラスに追加された新しいメソッドを呼び出すことにより、厄介な古いレガシー Java.util.GregorianCalendar
オブジェクトを最新のJava.timeオブジェクトに変換します。
ZonedDateTime zdt = myGregCal.toZonedDateTime();
そのタイムゾーンでその瞬間のDayOfWeek
列挙型オブジェクトを取得します。
DayOfWeek dow = zdt.getDayOfWeek();
dow.toString():水曜日
1〜7のような整数や「MON」のような文字列を渡すのではなく、これらのDayOfWeek
オブジェクトをコードの周りに渡します。列挙型オブジェクトを使用することで、コードをより自己文書化し、型安全性を提供し、有効な値の範囲を確保します。
ユーザーに提示するには、DayOfWeek
オブジェクトに、曜日の名前をLocale
で定義された人間の言語に翻訳するように依頼します。
String output =
dow.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.CANADA_FRENCH
)
;
メルクレディ
Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは厄介な古い legacyJava.util.Date
、 Calendar
、& SimpleDateFormat
などの日時クラス。
Joda-Time プロジェクトは現在 メンテナンスモード であり、 Java.time クラスへの移行をアドバイスします。
詳細については、 Oracle Tutorial を参照してください。多くの例と説明については、Stack Overflowを検索してください。仕様は JSR 310 です。
Java.timeオブジェクトをデータベースと直接交換できます。 JDBCドライバーJDBC 4.2 以降に準拠)を使用します。文字列やJava.sql.*
クラスは必要ありません。
Java.timeクラスはどこで入手できますか?