java - Kotlin LocalDateTime 为 Long
问题描述
我正在尝试将我的 LocalDateTime 字段保存为 long,以便我可以将其存储在我的 SQLite 数据库中。我怎么能做到这一点?
var datetime = LocalDateTime.now()
var longdt: Long = getString(datetime).toLong()
解决方案
您可以使用toEpochSecond()
and将一个精确到秒的值ofEpochSecond()
转换为/从一个值转换。long
示例(在 Java 中)
LocalDateTime now = LocalDateTime.now();
long nowInSeconds = now.toEpochSecond(ZoneOffset.UTC);
LocalDateTime dateTime = LocalDateTime.ofEpochSecond(nowInSeconds, 0, ZoneOffset.UTC);
System.out.println("now = " + now);
System.out.println("nowInSeconds = " + nowInSeconds);
System.out.println("dateTime = " + dateTime);
输出
now = 2020-05-12T12:12:36.984263200
nowInSeconds = 1589285556
dateTime = 2020-05-12T12:12:36
如果您需要long
精确到毫秒的值,请执行以下操作:
LocalDateTime now = LocalDateTime.now();
long nowInMillis = now.toEpochSecond(ZoneOffset.UTC) * 1000
+ now.get(ChronoField.MILLI_OF_SECOND);
LocalDateTime dateTime = LocalDateTime.ofEpochSecond(nowInMillis / 1000,
(int) (nowInMillis % 1000 * 1000000), ZoneOffset.UTC);
System.out.println("now = " + now);
System.out.println("nowInMillis = " + nowInMillis);
System.out.println("dateTime = " + dateTime);
输出
now = 2020-05-12T12:16:38.881510700
nowInMillis = 1589285798881
dateTime = 2020-05-12T12:16:38.881
如果需要,请指定除 之外的区域偏移量UTC
,但在这种情况下,您应该使用ZonedDateTime
orOffsetDateTime
代替LocalDateTime
。
推荐阅读
- javascript - 有什么方法可以在消费者超时后自动启动 eventthub 订阅?
- python - 如何将多个图像列表按列打印到 .PDF 文件?
- json - Postman 可视化和使用 Handlebars 进行迭代
- reactjs - Next JS - 如何使用 next-transpile-modules 解析路径?
- maven - 使用 Maven Tycho 和 Eclipse RCP 构建客户端应用程序分发
- sequence-diagram - 序列图中前端页面之间的交互
- c# - 未应用 DbSet 的动态包含操作
- visual-studio-code - 如何禁用特定扩展的 vscode-code-runner?
- angular - 无法在 Ionic 中使用 SQLite 创建数据库
- sql - 我可以在 DB2 中找到包含某个列的所有存储过程吗?