How to get current local date and time in Kotlin

AndroidDatetimeKotlin

Android Problem Overview


How to get current Date (day month and year) and time (hour, minutes and seconds) all in local time in Kotlin?

I tried through LocalDateTime.now() but it is giving me an error saying Call requires API Level 26 (curr min is 21).

How could I get time and date in Kotlin?

Android Solutions


Solution 1 - Android

Try this :

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

Solution 2 - Android

java.util.Calendar.getInstance() represents the current time using the current locale and timezone.

You could also choose to import and use Joda-Time or one of the forks for Android.

Solution 3 - Android

My utils method for get current date time using Calendar when our 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
}

Using

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

Solution 4 - Android

You can get current year, month, day etc from a calendar instance

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)

If you need it as a LocalDateTime, simply create it by using the parameters you got above

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

Solution 5 - Android

Try this:

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

You can use your own pattern as well, e.g.

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

To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(), or use new SimpleDateFormat(String template, Locale locale) with for example Locale.US for ASCII dates. The first three options require API level 29.

Solution 6 - Android

To get the current Date in Kotlin do this:

val dateNow = Calendar.getInstance().time

Solution 7 - Android

You can use this function

fun getCurrentDate():String{
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")
return sdf.format(Date())
}

Solution 8 - Android

fun main(){
println(LocalDateTime.now().toString()) //2021-10-25T12:03:04.524
println(Calendar.getInstance().time) //Mon Oct 25 12:02:23 GST 2021
}

There are the above options, with the output added as comment.

Solution 9 - Android

checkout these easy to use Kotlin extensions for date format

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)
}

Solution 10 - Android

fun now(): String {
    return SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(Date())
}


    val currentYear = SimpleDateFormat("yyyy",Locale.getDefault()).format(Date())
    val currentMonth = SimpleDateFormat("MM",Locale.getDefault()).format(Date())
    val currentDay = SimpleDateFormat("dd",Locale.getDefault()).format(Date())

Solution 11 - Android

Another solution is changing the api level of your project in build.gradle and this will work.

Solution 12 - Android

I use this to fetch data from API every 20 seconds

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrgoncalvView Question on Stackoverflow
Solution 1 - AndroidShan MkView Answer on Stackoverflow
Solution 2 - AndroidephemientView Answer on Stackoverflow
Solution 3 - AndroidLinhView Answer on Stackoverflow
Solution 4 - AndroidJ7bitsView Answer on Stackoverflow
Solution 5 - AndroidNawaraj BistaView Answer on Stackoverflow
Solution 6 - AndroidThiagoView Answer on Stackoverflow
Solution 7 - AndroidpavelView Answer on Stackoverflow
Solution 8 - AndroidAkash VermaView Answer on Stackoverflow
Solution 9 - AndroidSyed Arsalan ShahView Answer on Stackoverflow
Solution 10 - AndroidPatrik JacobsView Answer on Stackoverflow
Solution 11 - AndroidSebastianView Answer on Stackoverflow
Solution 12 - AndroidNguyễn TýView Answer on Stackoverflow