如何在 Kotlin 中获取当前时间作为时间戳?
Posted
技术标签:
【中文标题】如何在 Kotlin 中获取当前时间作为时间戳?【英文标题】:How do I get the current time as a TimeStamp in Kotlin? 【发布时间】:2018-09-26 11:47:09 【问题描述】:这是我需要的时间戳格式:2018-03-22 19:02:12.337909
【问题讨论】:
【参考方案1】:Kotlin 没有时间处理自己的类,因此您只需使用 Java 的 java.time
。对于 ISO-8601 时间戳(这是首选格式):
DateTimeFormatter.ISO_INSTANT.format(Instant.now())
这将返回2018-04-16T17:00:08.746Z
。对于您的格式,或者如果您需要不同的时区,您可以指定:
DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS")
.withZone(ZoneOffset.UTC)
.format(Instant.now())
有关如何指定格式字符串的详细信息,请参阅java.time.format.DateTimeFormatter
JavaDoc。
java.time 类与 android 26 及更高版本以及 Java 8 及更高版本捆绑在一起。大多数 java.time 功能都在 ThreeTen-Backport 项目中向后移植到 Java 6 和 Java 7。进一步适用于ThreeTenABP 中的早期 Android (How to use ThreeTenABP…。
2020/07 更新
ThreeTenABP 的开发正在逐渐结束。使用 Gradle 插件 4.0 及更高版本,您可以直接使用 java 8 API,而无需为您的应用设置最低 API 级别。
欲了解更多信息,请参阅Java 8+ API desugaring support (Android Gradle Plugin 4.0.0+)
【讨论】:
这需要 API lvl 26 或以上,是否有与旧 API 兼容的替代方案? 哦,是的,@DarkCygnus。对于 26 以下的 Android API 级别,请使用 java.time 的 backport 的 Android 适配。见How to use ThreeTenABP in Android Project。【参考方案2】:试试 java.sql.Timestamp(System.currentTimeMillis())
我正在使用 API 19,它适用于我
【讨论】:
是java.security还是java.sql? 导入 java.sql.Timestamp 可怕的java.sql.Timestamp
类在几年前被 JSR 310 采用的 java.time 类所取代。被 Instant
和 OffsetDateTime
类取代。建议在 2019 年使用 Timestamp
是糟糕的建议。【参考方案3】:
val currentTimestamp = System.currentTimeMillis()
【讨论】:
这不会给你请求的格式。System.currentTimeMillis()
返回一个长字符串,而不是格式化字符串。
也许这不是这个问题的答案,但是当我搜索“Kotlin 中的时间戳”时,这是最好的答案,所以点赞【参考方案4】:
package com.mkyong.date
import java.sql.Timestamp
import java.text.SimpleDateFormat
import java.util.Date
object TimeStampExample
private val sdf = SimpleDateFormat("yyyy.MM.dd.HH.mm.ss")
@JvmStatic fun main(args:Array<String>)
//method 1
val timestamp = Timestamp(System.currentTimeMillis())
println(timestamp)
//method 2 - via Date
val date = Date()
println(Timestamp(date.getTime()))
//return number of milliseconds since January 1, 1970, 00:00:00 GMT
println(timestamp.getTime())
//format timestamp
println(sdf.format(timestamp))
【讨论】:
【参考方案5】:我正在使用这个
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
这里有所有的日期和时间模式 https://developer.android.com/reference/java/text/SimpleDateFormat
【讨论】:
请不要教年轻人使用早已过时且臭名昭著的麻烦SimpleDateFormat
类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time
, the modern Java date and time API, 和它的DateTimeFormatter
中有很多更好的地方。是的,您可以在 Android 上使用它。对于较旧的 Android,请参阅 How to use ThreeTenABP in Android Project。
当然,我没有提到 Android 项目的使用。我在开发人员 android 文档中找到了这行代码,它很简单并且对我有用,所以我认为它很好。对不起。
请注意,Kotlin 不仅仅是 Android 上的 Kotlin。以上是关于如何在 Kotlin 中获取当前时间作为时间戳?的主要内容,如果未能解决你的问题,请参考以下文章