卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法( 二 )
同样时间是正确的 。 然后再打印出秒数:
【卜娃娃|最硬核的「Java8时间系统」设计原理与使用方法】1System.out.println(cnldt.toEpochSecond(ZoneOffset.of("+8")));2System.out.println(enldt.toEpochSecond(ZoneOffset.of("Z")));3System.out.println(usldt.toEpochSecond(ZoneOffset.of("-6")));输出结果如下:
115834740572158347405731583474057可以看到 , 它们经过的秒数是一样的 。 备注:中国时间东8时区 , 英国时间0时区 , 美国时间西6时区 。 这里主要想说的是 , 在之前的Java中是使用毫秒来衡量偏移量的 , 自Java8开始就使用秒和纳秒来衡量偏移量 , 纳秒是指最后那一个不完整的1秒 。 纳秒是10的9次方分之一秒 , 比毫秒精确了100万倍 , 所有Java8的时间系统较之以前更精确了 , 当然是理论上的啦 。 时区是颇为复杂的
大家不要小看时区 , 它绝对比我们认为的“不就是差几个小时嘛”要复杂些 。 时区在划分时主要考虑当地的居民生活和上班情况 , 所以时区是和地区有密切关联的 。 因此时区的名字也都以地理位置来标识的 。 具体格式是:大洲或大洋名称/城市或著名地点或方位名称 , 如Asia/Shanghai , Europe/London , America/Chicago 。 当然了也有一些不规则的 , 如MST7MDT、US/Hawaii、SystemV/CST6、Zulu、NZ-CHAT , 也许是历史遗留问题或其它原因吧 , 不去深究了 。 在Java8中时区用ZoneId表示 , 意思是一个地区的ID , ID就是标识嘛 , 所以我觉得ZoneId更应该理解为一个地区而非一个时区 。 可能有人会觉得为啥不用TimeZone来表示时区呢?遗憾的是在JDK1.1的时候这个名字就被用了 , 而且表示的就是时区 。 时区可以按如下的方式创建:
1ZoneId.of("Asia/Shanghai");2ZoneId.of("Europe/London");3ZoneId.of("America/Chicago");采用地理位置的方式来命名时区是比较生活化的 , 貌似一下子很难和时间计算联系在一起 。 其实时区的本质不就是距离标准(0时区)时间的偏移量嘛 , 所以时区就是基于起点(0时区)的偏移量 。 这样是不是仿佛一下具有了计算性 。 这个偏移量用ZoneOffset表示 , 0时区偏移量是0 , 可以表示为:
1ZoneOffset.of("+0");2ZoneOffset.of("-0");注意 , 虽然“+0”和“-0”在算术上是相等的 , 但这里是时区格式的字符串 , 所以“+”和“-”是不能省略的 。 0时区是时区的起点 , 比较特殊 , 因此还专门有一个字母来表示 , 就是大写字母“Z” , 因此可以这样:
1ZoneOffset.of("Z");相信大家都知道了“+”和“-”的意思了 , 那我就再赘述一遍吧 。 加号(+)表示0时区东边的时区 , 如中国的东8时区 , 可以表示为:
1ZoneOffset.of("+8");减号(-)表示0时区西边的时区 , 如美国的西6时区 , 可以表示为:
1ZoneOffset.of("-6");上面的“+8”表示比标准时间早8个小时 , “-6”表示比标准时间晚6个小时 。 既然整小时都被支持了 , 那分钟也应该被支持的啊 , 没错 , 分钟也是支持的 , 像这样:
1ZoneOffset.of("+01:30");2ZoneOffset.of("-02:20");"+01:30"表示比标准时间早1小时30分 , "-02:20"表示比标准时间晚2小时20分 。 既然分钟都支持了 , 那干脆连秒也支持了吧 , 是的 , 秒也是支持的 , 像这样:
1ZoneOffset.of("+03:40:50");2ZoneOffset.of("-04:50:30");含义和上面一样 , 只是多了个秒而已 。 需要说明的是 , Java8支持的时间偏移量范围是从“-18:00”到“+18:00” , 横跨36个小时 , 远超过24个时区 。 理论上讲 , ZoneId和ZoneOffset应该具有某种联系 , 因为它们的目的是一样的 , 只是从不同的角度来描述 , 都表示一个地方的当地时间距离标准时间的差值 。 实际上ZoneOffset继承了ZoneId , 所以“Asia/Shanghai”和“+8”其实是一样的 , 表示上海的当地时间比标准时间早8个小时 , 很简单吧 , 要是都这么简单那就好了 。 曾经混乱的地理时区及其转换
推荐阅读
- 点亮精彩生活|“芭比娃娃”卸妆火了!当素颜曝光那一刻,网友:吓的我一哆嗦!
- 琉璃娃娃的梦|最经典的“许仙”反串女演员叶童结婚多年无子,近照流出老态尽显
- 帅不过三秒|求赵露思别再穿娃娃裙了,裙摆只是加了层褶,腿就显瘦到我崩溃
- 琉璃娃娃的梦|李佳琦也要出道拍戏?古装造型帅如邓伦,网红逆袭成功好励志
- 卜娃娃|音视频开发4. ZLMediaKit库入门使用 编译安装
- 养生知多少|张佳宁看着哪里像30岁?穿蕾丝娃娃领波点裙,就是个18岁小姐姐
- 卜娃娃|飒粉福利|瞧,她在丽江嗨.....
- 日剧盘点|这仍是我熟悉的张雪迎吗?麻花辫配娃娃裙,简直软萌到不像话
- 小孟说车车|4753mm长,油耗5.7L,30天狂甩21393辆,最硬气的“大众”A级轿车
- 穿搭|柳岩这回把好身材都藏起来,吊带娃娃装配开叉裤,不露反而更气质
