如何得到 Kotlin 当地的日期和时间

如何获取 Kotlin 当地时间的当前日期(日、月、年)和时间(小时、分钟和秒) ?

我尝试通过 LocalDateTime.now(),但它给我一个错误说 Call requires API Level 26 (curr min is 21)

我怎么才能在 Kotlin 得到时间和日期?

229390 次浏览

java.util.Calendar.getInstance() 表示使用当前语言环境和时区的当前时间。

您还可以选择导入和使用 Joda-Time 或 安卓的叉子之一。

试试这个:

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

在 minSdkVersion < 26时,使用 Calendar获取当前日期时间的 utils 方法。

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
}

吸毒

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

试试这个:

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

你也可以使用你的 自己的模式,例如。

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

要获得本地格式,可以使用 getDateInstance()getDateTimeInstance()getTimeInstance(),或者使用新的 SimpleDateFormat(String template, Locale locale),例如对于 ASCII 日期使用 Locale.US。 前三个选项需要 API 级别29。

检查这些易于使用的 Kotlin 扩展日期格式

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

可以从日历实例获取当前年、月、日等

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)

如果您需要它作为 LocalDateTime,只需使用上面获得的参数创建它

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

我每20秒从 API 获取一次数据

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

另一个解决方案是在 build.gradle 中更改项目的 api 级别,这将会奏效。

要得到当前 Kotlin 的日期,请这样做:

val dateNow = Calendar.getInstance().time

您可以使用这个函数

fun getCurrentDate():String{
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")
return sdf.format(Date())
}
fun main(){
println(LocalDateTime.now().toString()) //2021-10-25T12:03:04.524
println(Calendar.getInstance().time) //Mon Oct 25 12:02:23 GST 2021
}

有上面的选项,输出作为注释添加。

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

假设我们有几秒钟的时间,我们可以这样做: (koltin 语言)

val dateObject = Date(timeInMillis)
val calendarInstance = Calendar.getInstance()
calendarInstance.time = dateObject
val hour = calendarInstance.get(Calendar.HOUR)
val minute = calendarInstance.get(Calendar.MINUTE)
val ampm = if(calendarInstance.get(Calendar.AM_PM)==0) "AM " else "PM "
val date = calendarInstance.get(Calendar.DATE)
val month = calendarInstance.get(Calendar.MONTH)
val year = calendarInstance.get(Calendar.YEAR)