So erhalten Sie das aktuelle Datum und die Uhrzeit in Kotlin


74

Wie erhalte ich das aktuelle Datum (Tag, Monat und Jahr) und die Uhrzeit (Stunde, Minuten und Sekunden) in Kotlin in Ortszeit?

Ich habe es versucht, LocalDateTime.now()aber es gibt mir einen Fehler zu sagen Call requires API Level 26 (curr min is 21).

Wie könnte ich Zeit und Datum in Kotlin bekommen?


3
Für API-Ebenen unter 26 fügen Sie einfach die ThreeTenABP-Bibliothek zu Ihrem Projekt hinzu, importieren Sie org.threeten.bp.LocalDateTimeund gehen Sie wie folgt vor : LocalDateTime.now(yourTimeZone)(Ich empfehle, die Zeitzone anzugeben, aber wenn Sie dies nicht tun, erhalten Sie die JVM-Zeitzoneneinstellung.) Weitere Informationen finden Sie in dieser Frage: Verwendung von ThreeTenABP in Android Project .
Ole VV

Überprüfen Sie diesen Link für Ihre benötigte Lösung: stackoverflow.com/questions/3747490/…
Prashant Jajal

Antworten:


36

java.util.Calendar.getInstance() stellt die aktuelle Zeit unter Verwendung des aktuellen Gebietsschemas und der aktuellen Zeitzone dar.

Sie können auch Joda-Time oder eine der Gabeln für Android importieren und verwenden .


Das Problem ist, dass das Datum im GMT-0-Format angegeben wird. Wie bekomme ich Ortszeit (in meinem Fall GMT -3 und GMT -2)?
Rgoncalv

Ich habe gerade festgestellt, dass die Zeit "falsch" war, weil die Zeitzone des Emulators auf GMT 0 eingestellt war. Bei Verwendung in einem realen Gerät war alles in Ordnung :)
rgoncalv

58

Versuche dies :

 val sdf = SimpleDateFormat("dd/M/yyyy hh:mm:ss")
 val currentDate = sdf.format(Date())
 System.out.println(" C DATE is  "+currentDate)

Ich nehme an, das ist SimpleDateFormatvon java.text?
Flimm

6
Das Datum ist größtenteils veraltet und wird seit Jahren eingestellt. Ich bin nicht damit einverstanden, es einem neuen Lernenden zu empfehlen.
Prime624

28

Meine Utils-Methode zum CalendarAbrufen der aktuellen Datums- und Uhrzeit mithilfe von minSdkVersion <26.

fun Date.toString(format: String, locale: Locale = Locale.getDefault()): String {
    val formatter = SimpleDateFormat(format, locale)
    return formatter.format(this)
}

fun getCurrentDateTime(): Date {
    return Calendar.getInstance().time
}

Verwenden von

import ...getCurrentDateTime
import ...toString
...
...
val date = getCurrentDateTime()
val dateInString = date.toString("yyyy/MM/dd HH:mm:ss")

2
Dies sollte die Antwort sein: einfach und sauber, ich habe es als Funktion auf Paketebene implementiert (auf Funktionen auf Paketebene : stackoverflow.com/questions/38778882/… ), um es von überall zu erreichen
rTECH

4

Sie können das aktuelle Jahr, den Monat, den Tag usw. aus einer Kalenderinstanz abrufen

val c = Calendar.getInstance()

val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)

val hour = c.get(Calendar.HOUR_OF_DAY)
val minute = c.get(Calendar.MINUTE)

Wenn Sie es als LocalDateTime benötigen, erstellen Sie es einfach mit den oben angegebenen Parametern

val myLdt = LocalDateTime.of(year, month, day, ... )

3

Versuche dies:

val date = Calendar.getInstance().time
val formatter = SimpleDateFormat.getDateTimeInstance() //or use getDateInstance()
val formatedDate = formatter.format(date)

Sie können auch Ihr eigenes Muster verwenden , z

val sdf = SimpleDateFormat("yyyy.MM.dd")
// 2020.02.02

Um die lokale Formatierung zu erhalten, verwenden Sie getDateInstance(), getDateTimeInstance()oder getTimeInstance()oder verwenden Sie new SimpleDateFormat(String template, Locale locale)mit beispielsweise Locale.US für ASCII-Daten. Die ersten drei Optionen erfordern API-Level 29.


0

Testen Sie diese benutzerfreundlichen Kotlin-Erweiterungen für das Datumsformat

fun String.getStringDate(initialFormat: String, requiredFormat: String, locale: Locale = Locale.getDefault()): String {
    return this.toDate(initialFormat, locale).toString(requiredFormat, locale)
}

fun String.toDate(format: String, locale: Locale = Locale.getDefault()): Date = SimpleDateFormat(format, locale).parse(this)

fun Date.toString(format: String, locale: Locale = Locale.getDefault()): String {
    val formatter = SimpleDateFormat(format, locale)
    return formatter.format(this)
}

0

Um das aktuelle Datum in Kotlin zu erhalten, gehen Sie wie folgt vor:

val dateNow = Calendar.getInstance().time

-1

Ich benutze dies, um alle 20 Sekunden Daten von der API abzurufen

 private fun isFetchNeeded(savedAt: Long): Boolean {
        return savedAt + 20000 < System.currentTimeMillis()
    }

-1

Eine andere Lösung besteht darin, die API-Ebene Ihres Projekts in build.gradle zu ändern. Dies funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.