如何在 Kotlin 中获取当前的本地日期和时间

Posted

技术标签:

【中文标题】如何在 Kotlin 中获取当前的本地日期和时间【英文标题】:How to get current local date and time in Kotlin 【发布时间】:2018-04-10 21:38:23 【问题描述】:

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

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

如何在 Kotlin 中获取时间和日期?

【问题讨论】:

对于低于 26 的 API 级别,只需将 the ThreeTenABP library 添加到您的项目中,导入 org.threeten.bp.LocalDateTime 然后按照您的尝试进行操作:LocalDateTime.now(yourTimeZone)(我建议指定时区,但如果您不这样做您将获得 JVM 时区设置)。在this question: How to use ThreeTenABP in android Project 中查看更多信息。 检查此链接以获得您需要的解决方案:***.com/questions/3747490/… 【参考方案1】:

试试这个:

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

【讨论】:

Date 大部分已被弃用,并且多年来一直处于逐步淘汰的过程中。我不同意向新学习者推荐它。【参考方案2】:

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

您还可以选择导入和使用 Joda-Time 或 forks for Android 之一。

【讨论】:

举个例子就好了。【参考方案3】:

当我们的 minSdkVersion 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")

【讨论】:

这应该是公认的答案:简单而干净,我将它实现为一个包级函数(在包级函数上:***.com/questions/38778882/…),以便从任何地方访问它【参考方案4】:

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

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, ... )

【讨论】:

【参考方案5】:

试试这个:

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),例如Locale.US 用于ASCII 日期。 前三个选项需要 API 级别 29。

【讨论】:

【参考方案6】:

要在 Kotlin 中获取当前日期,请执行以下操作:

val dateNow = Calendar.getInstance().time

【讨论】:

【参考方案7】:

你可以使用这个功能

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

【讨论】:

【参考方案8】:

查看这些易于使用的 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)

【讨论】:

【参考方案9】:
fun main()
println(LocalDateTime.now().toString()) //2021-10-25T12:03:04.524
println(Calendar.getInstance().time) //Mon Oct 25 12:02:23 GST 2021

有上述选项,输出添加为注释。

【讨论】:

【参考方案10】:
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())

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案11】:

另一种解决方案是在 build.gradle 中更改项目的 api 级别,这将起作用。

【讨论】:

【参考方案12】:

我使用它每 20 秒从 API 获取数据

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

【讨论】:

以上是关于如何在 Kotlin 中获取当前的本地日期和时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RecyclerView android kotlin 中的每个项目上显示日期(日和月)

如何在 Kotlin 标准库(多平台)上获取当前的 unixtime

如何在 kotlin 中获取当前的构建变体

EXCEL如何获取当前日期时间

在android中如何获取当前日期?

如何获取当前的日期和时间