web-dev-qa-db-ja.com

Android studioのシンボル 'Java.time.LocalDate'エラーを解決できません

AndroidアプリでJava.time.LocalDateを使用しようとしていますが、それをインポートしようとすると、Java.timeのクラスがAndroidスタジオ1.1

これについて私が理解できた唯一の理由は、Java 8をサポートしていないことです。それは本当にそうですか?

20
siim sammul

Android APIレベル26

Android APIレベル26は、 LocalDate クラスを含むJava.timeの実装を取得しました。

以前のAndroid

Android <26の場合、代替には次のものがあります。

  • ThreeTen-Backport は、Java 6&7。へのJava.time機能の多くのバックポートです。
    • ThreeTenABP ThreeTen-BackportをAndroidに適合させます。
  • Joda-Time はAndroidプロジェクトで一般的に使用されています。Joda-TimeはJava 8のJava.timeパッケージに影響を与えましたが、ドロップインの代替ではありません。Joda-Timeチームは助言しますJava.timeへの移行。

Java.timeについて

Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは、面倒な古い レガシー 日時クラスなどに代わるものです) Java.util.DateCalendar 、& SimpleDateFormat

Joda-Time プロジェクトが メンテナンスモード になりました)は、 Java.time クラスへの移行を推奨しています。

詳細については、 Oracleチュートリアル を参照してください。また、スタックオーバーフローで多くの例と説明を検索してください。仕様は JSR 310 です。

Java.timeオブジェクトをデータベースと直接交換できます。 JDBCドライバーJDBC 4.2 以降に準拠)を使用してください。文字列は不要で、Java.sql.*クラスは不要です。

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

  • Java SE 8Java SE 9Java SE 1 、およびそれ以降
    • 内蔵。
    • バンドルされた実装を備えた標準Java APIの一部。
    • Java 9では、いくつかのマイナーな機能と修正が追加されています。
  • Java SE 6 および Java SE 7
    • Java.time機能の多くは、 ThreeTen-Backport のJava 6&7にバックポートされています。
  • Android
    • Android以降のバージョンには、Java.timeクラスの実装がバンドルされています。
    • 以前のAndroid(<26)の場合、 ThreeTenABP プロジェクトはThreeTen-Backport(上記) ThreeTenABPの使用方法… を参照してください。
16
Basil Bourque

はい、AndroidはJava-8をサポートしていません。Java-8に含まれる新しい日付/時刻APIについては、この問題を見ることができます:

http://code.google.com/p/Android/issues/detail?id=62192

現在、Google AndroidにJSR-310(Java.time-package)を導入する予定はありません。

5
Meno Hochschild

最後に、Java 8に含まれる日付/時刻APIが、最近リリースされたAndroid APIレベル26に追加されました。

DateTimeFormatter API 26

2
Mara