web-dev-qa-db-ja.com

グレゴリオ暦から曜日を取得する

日付があり、曜日を知る必要があるため、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";
    }
20
Marco Matarazzi
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);
13
Benn Sandoval

ジョーダタイム

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");
_
3
jki

tl; dr

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.time

古いクラスに追加された新しいメソッドを呼び出すことにより、厄介な古いレガシー 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.time フレームワークはJava 8以降に組み込まれています。これらのクラスは厄介な古い legacyJava.util.DateCalendar 、& SimpleDateFormat などの日時クラス。

Joda-Time プロジェクトは現在 メンテナンスモード であり、 Java.time クラスへの移行をアドバイスします。

詳細については、 Oracle Tutorial を参照してください。多くの例と説明については、Stack Overflowを検索してください。仕様は JSR 310 です。

Java.timeオブジェクトをデータベースと直接交換できます。 JDBCドライバーJDBC 4.2 以降に準拠)を使用します。文字列やJava.sql.*クラスは必要ありません。

Java.timeクラスはどこで入手できますか?

0
Basil Bourque