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



我有一个Kotlin多平台项目,我想在共享代码中获得当前的unixtime。

你是如何在Kotlin标准库中做到这一点的?

如果您已经使用kotlinx日期时间,或者计划在其他日期/时间功能中使用更多,那么使用kotlin x日期时间是一个不错的选择。但是,如果你的应用程序/库唯一需要的是划时代秒,我认为添加对kotlinx日期时间的依赖是过分的。

相反,声明自己的epochMillis()函数并为每个平台实现它很简单:

// for common
expect fun epochMillis(): Long
// for jvm
actual fun epochMillis(): Long = System.currentTimeMillis()
// for js
actual fun epochMillis(): Long = Date.now().toLong()
// for native it depends on target platform
// but posix can be used on MOST (see below) of posix-compatible native targets
actual fun epochMillis(): Long = memScoped {
val timeVal = alloc<timeval>()
gettimeofday(timeVal.ptr, null)
(timeVal.tv_sec * 1000) + (timeVal.tv_usec / 1000)
}

注意:Windows Posix实现没有gettimeofday,因此它不会在MinGW目标上编译

可以使用实验Kotlin日期时间库,当前版本为0.1.0

val nowUnixtime = Clock.System.now().epochSeconds

更多信息请点击此处:https://github.com/Kotlin/kotlinx-datetime

相关内容

  • 没有找到相关文章

最新更新