Java中的时间问题 timestamp date LocalDate*

基于 Java
**时间戳 **
Java中可以通过System.currentTimeMillis() 获取
计算机中记录的只有时间戳,与时间相关的日,月,年,时分秒,周,时区等概念都是基于时间戳和时间转换规则计算而来。而Date相关的方法主要做的就是这些。记录上述数据及其相关的数据。
Date
Date实例化后就不能修改时区了(如果跨时区序列化传输,会有问题),Date的原理就是基于时间戳和当前时区计算出与时间相关的数据。由于其实例化后时区不可修改,所以其转换为时间戳时不会有隐式的时间问题

LocalDateTime
能够让我们对给定的时间 取指定时区的时间戳:
具体取时区方式如下:.localDateTime.toInstant(ZoneId.of("Asia/Aqtau").toTimeZone().toZoneOffset()).toEpochMilli()
这里,由于LocalDateTime实例化时已经存储了格式化后的时间数据而不是时间戳,而这个数据是和时区相关的。如果我们选择其他时区进行时间戳获取,时间戳会与之前的时间戳不一致

其实,对于数据库也会存在与Java类似的问题,如果跨国业务,我们希望有同一时刻,应该选用时间戳存储,如果是同一时间则应该选择用datetime存储

posted @ 2021-10-20 22:11  等一个人,咖啡  阅读(219)  评论(0编辑  收藏  举报