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?

rgoncalv
quelle
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 .

kurzlebig
quelle
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)
Shan Mk
quelle
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")
Phan Van Linh
quelle
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, ... )
J7bits
quelle
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.

Nawaraj Bista
quelle
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)
}
Syed Arsalan Shah
quelle
0

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

val dateNow = Calendar.getInstance().time
Thiago
quelle
-1

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

 private fun isFetchNeeded(savedAt: Long): Boolean {
        return savedAt + 20000 < System.currentTimeMillis()
    }
Nguyễn Tý
quelle
-1

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

Sebastian
quelle