Kotlin LocalDate 与时间戳相互转换

更新日期: 2021-09-15 阅读次数: 166 字数: 200 分类: Kotlin

在 Android Jetpack Compose 中使用 MaterialDatePicker 返回的日期为 Long 型时间戳。

我想将其转换为 LocalDate 类型。

datepicker 返回的数据类型

1630195200000

data class convertor 存入本地数据库的数据类型

1630195200

其对应的转换函数:

@TypeConverter
fun dateToTimestamp(date: LocalDate?): Long? {
	val zoneId: ZoneId = ZoneId.systemDefault()
	return date?.atStartOfDay(zoneId)?.toEpochSecond()
}

在线查看当前时间戳

https://www.unixtimestamp.com/

将 1630195200 转换为可读的时间:

Format:	Seconds
GMT:	Sun Aug 29 2021 00:00:00 GMT+0000
Your Time Zone:	Sun Aug 29 2021 08:00:00 GMT+0800 (中国标准时间)

LocalDate 如何用整型时间戳数字来初始化

// long to LocalDate
val date = Instant.ofEpochMilli(it).atZone(ZoneId.systemDefault()).toLocalDate();

由于 LocalDate 只有 ofEpochDay 函数,从天数转换为 LocalDate。

val date = LocalDate.ofEpochDay(days)

也没有 ofEpochSecond 函数,只有 LocalDateTime 有这个功能。所以只能使用上面的方法。

爱评论不评论