私は、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.Date
、Calendar
、& SimpleDateFormat
。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
より多くを学ぶために、参照Oracleのチュートリアルを。そして、多くの例および説明のためにスタックオーバーフローを検索します。仕様は、JSR 310。
あなたは交換してもよいjava.timeのデータベースにオブジェクトを直接。使用するJDBCドライバに準拠するJDBC 4.2以降。文字列を使用する必要はありません、が不要java.sql.*
なクラス。
どこjava.timeクラスを取得するには?
- Java SEの8、 Java SEの9、 Java SEの10、 Java SEの11、以降-同梱の実装と標準のJava APIの一部。
- Javaの9は、いくつかのマイナーな機能や修正を追加します。
- Java SEの6と Java SEの7
- ほとんどのjava.timeの機能がでJava 6&7にバックポートされThreeTen-バックポート。
- アンドロイド
- 実装バンドルのAndroidのそれ以降のバージョンjava.timeのクラス。
- 以前のアンドロイド(<26)の場合、ThreeTenABPのプロジェクトは、適応ThreeTen-バックポート(上記参照します)。参照してください... ThreeTenABPを使用する方法。