Androidのカレンダー対Javaのカレンダーとの違いは何ですか

イスラム教Assemが:

私は、Androidに新たなんだと私は、現在の日付を取得しようとしているが、AndroidのCalendarクラスは、古いデバイスをサポートするためのAPI 24. Iの必要性を必要とし、TimeクラスがAPI 22で廃止されました。

問題は、API 23に現在の日付を取得する方法であり、私は使用して、それを解決したjava.util.Calendarすべてのバージョンで動作しています。だから私は、AndroidのカレンダーやJavaのカレンダーを何を使うべきでしょうか?

Androidのカレンダーを使用した場合、日、月、年がちょうど整数であることに注意してください。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    day =android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.DAY_OF_MONTH);
    month = android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.MONTH);
    year = android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.YEAR);
}
else {
    day = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_MONTH);
    month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
    year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
}

唯一のJavaカレンダーを使用している場合やAPIのバージョンを確認する必要はありません

day = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_MONTH);
month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
バジルボーク:

TL; DR

だから私は、AndroidのカレンダーやJavaのカレンダーを何を使うべきでしょうか?

どちらも。

現代の使用java.timeのクラスを。Androidの<26へのバックポートで利用できます。

LocalDate.of( 2018 , Month.JANUARY , 23 ) 

避けレガシークラス

Javaでは、ひどいjava.util.Calendarクラス(および関連するクラス、Dateなど)によって年前に取って代わられたjava.timeのクラス。Androidの26で、後に今すぐご利用いただけます。

ThreeTen-バックポートの必須持参ライブラリjava.timeの事実上同一のAPIを使用してJava 6&7に機能を。そのプロジェクトは、さらににAndroidの<26に適合されているThreeTenABPのプロジェクト。

私は強く代わりにのみ使用し、従来のクラスを避けることをお勧めしますjava.timeのクラスを。これらの近代的なクラスは、JSR 310で定義され、業界をリードする主導同じ男が主導しているジョダタイムライブラリーを、スティーブンColebourne。彼らは、長年の経験に基づいた優れたデザインを持っているので。使用ThreeTenABPは、プロジェクトにライブラリを追加する気にも価値があります。

日付のみ、年月日、時間日の時間帯なしなし、使用LocalDateするクラスを。

LocalDate ld = LocalDate.of( 2018 , 1 , 23 ) ; 

または便利な使用Monthより読みやすくするために列挙型を。

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ; 

java.time

java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.DateCalendar、& SimpleDateFormat

ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。

より多くを学ぶために、参照Oracleのチュートリアルをそして、多くの例および説明のためにスタックオーバーフローを検索します。仕様は、JSR 310

あなたは交換してもよいjava.timeのデータベースにオブジェクトを直接。使用するJDBCドライバに準拠するJDBC 4.2以降。文字列を使用する必要はありません、が不要java.sql.*なクラス。

どこjava.timeクラスを取得するには?

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=188734&siteId=1