Zum Beispiel zwischen ** 2008/9/23 ** und ** heute **, ** wie viele Tage? Wie viele Monate? wie viele Jahre? ** ** **
Wenn Sie versuchen, so etwas mit Java / Kotlins Datum oder Kalender zu tun, wird das Datum in UnixTime konvertiert, subtrahiert und dann erneut analysiert.
LocalDate
ist in einem solchen Fall nützlich, aber mit minSdk26 oder höher ist es schwierig.
Dies ist das Problem, das diesmal gelöst werden muss.
(Übrigens ist der 23.9.2008 der Tag, an dem Android 1.0 herauskam)
Dieser Gott von Jake Wharton hat diese Backport-Bibliothek für Android erstellt.
ThreeTen Android Backport https://github.com/JakeWharton/ThreeTenABP
Auf diese Weise können Sie LocalDate verwenden, ohne sich um minSdk kümmern zu müssen.
Schreiben Sie zunächst Folgendes in Gradle.
app/build.gradle
dependencies {
...
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.0'
}
Als Ergebnis
java.time.LocalDate
Zusätzlich zu dem LocalDate, das in vorhanden war
org.threeten.bp.LocalDate
Ist nun verfügbar. Benutze das.
Lassen Sie uns zum Beispiel die Differenz Tage, Monate und Jahre zwischen 2008/9/23 und heute überprüfen (geschrieben: 2019/4/30).
val androidFirstRelease = LocalDate.of(2008, Month.SEPTEMBER, 23)
val today = LocalDate.now() // 2019/4/30
val period = Period.between(androidFirstRelease, today)
> period.days -> 7
> period.months -> 7
> period.years -> 10
// java.time.Org statt Monat.threeten.bp.Beachten Sie mit Monat
Es stellte sich heraus, dass seit der ersten Veröffentlichung von Android 10 Jahre, 7 Monate und 7 Tage vergangen sind.
Die Verwendung von LocalDate entspricht im Wesentlichen der Verwendung von LocalDate unter Java8, daher sollten Sie dort nachsehen.
Schreiben Sie, wenn Sie sich an --java.time.LocalDate erinnern
Jetzt können Sie wieder zu Unix Time wechseln ... Sie müssen es nicht tun! Danke für deine harte Arbeit.
Recommended Posts