卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法( 七 )


卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法LocalTime类揭秘 , 先看它的存储字段 , 如下图10:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法只存储时/分/秒/纳秒四个字段 。 系统当前时间的获取方法 , 就是用系统当前默认时钟 , 算出来的 , 如下图11:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法算法也简单 , 从时钟里取出经过的秒数和时区偏移量对应的秒数 , 加起来 , 然后再算出最后那部分不能构成整天的剩余秒数 。 将这部分秒数转换为纳秒 , 再加上时钟里原本的那部分纳秒 , 这就是不能构成整天的总纳秒 , 然后算出时间 , 如下图12:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法LocalDateTime类揭秘 , 先看它的存储字段 , 如下图13:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法只存储了日期和时间两个字段 。 系统当前日期时间的获取方法 , 也是用系统当前默认时钟 , 算出来的 , 如下图14:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法具体算法和上面算日期、算时间的一模一样 。 OffsetDateTime类揭秘 , 先看它的存储字段 , 如下图15:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法一个本地日期时间和一个时区偏移量两个字段 。 说明一下 , 只要是算时间的 , 都会用的时区偏移量 , 只不过是前面算LocalDateTime时没有存而已 , 这里存了 。 系统当前带时区偏移量的日期时间获取方法 , 和之前的也完全一样 , 如下图16:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法OffsetTime类揭秘 , 先看它的存储字段 , 如下图17:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法一个本地时间和一个时区偏移量两个字段 。 系统当前带时区偏移量的时间获取方法 , 和之前的也完全一样 , 如下图18:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法ZonedDateTime类揭秘 , 先看它的存储字段 , 如下图19:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法一个本地日期时间、一个时区偏移量和一个地区三个字段 。 这里的ZoneId和ZoneOffset同时出现并不意味着重复的意思 , 因为一个ZoneId在不同的历史时期或一年中不同的时候可能对应的ZoneOffset是不同的 。 系统当前带地区偏移量的日期时间获取方法 , 和之前的也完全一样 , 如下图20:
卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法ZoneOffset类揭秘 , 先看它的存储字段 , 如下图21: