我有一个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