拨开时间的迷雾( 二 )
- 问题2:客户问这个问题 , 十有八九是以为时区只影响时间 , 忘记了“日期变更线” , 可以举一个极端的例子 , 举例子的时候时间一定要带上时区 。
本文插图
- 问题3:这个问题非常有挑战 , 用户都说到“数据库”了 。 看起来不把时间戳讲一讲是搞不定了 , 实际上客户真的不太理解时间戳 。 时间戳、绝对时间都非常的技术 , 客户接受不了 。 当需要表达时间戳的时候 , 我一般说成是格林尼治时间 , 我们把所有时间都转换成0时区的时间保存了 , 这样比较方便比较 。
答:这个过程就像2+8=10 , 但是通过10 , 无法找到2和8 。 计算机在存储绝对时间时做了类似的事情 。
总结下来和客户沟通的主要手段就是:统一语言加举例子 。
程序员的时间
常见问题
1.java.util.TimeZone和java.time.ZoneId , 这两个东西干什么的?有什么区别?
- TimeZone是JDK7以前的原生时区 , ZoneId是JDK8以后的原生时区 。 他们功能是一样的 , ZoneId是从joda-time到jdk里面来踢场子的 。
- TimeZone提供了toZoneId() , ZoneId没有提供toTimeZone() , 但是TimeZone提供了getTimeZone(ZoneId),看来ZoneId比TimeZone更为基础 , 推荐使用ZoneId 。
- 在提到时区的时候 , 我们会想到Australia/Canberra或者UTC+11:00 , 但是这两个东西并不等价 。 UTC+11:00其实是偏移量 , 与任何国家不相干 , 对应固定的经度区间,157度30分~172度30分;Australia/Canberra是行政时区 , 采用相同时区的地区 , 在地理位置上的偏移量可能不同 , 中国跨越了5个时区 , 但是全国还是统一使用UTC+8;有些国家的政策也可能调整 , 具体的偏移量也会变 , 采用夏令时的地区每年都会变 , 具体什么时间调整也是政策决定的 。
- 下面demo中同一个Zone的两个时间2015-10-04 01:00和2015-10-04 03:00 , 使用了不同的时区 , 看起来相差两小时 , 实际上仅仅相差1小时 。
Start:2015-10-04T01:00+10:00[Australia/Canberra] End:2015-10-04T03:00+11:00[Australia/Canberra] Duration:PT1H所以使用类似Australia/Canberra的这种ZoneRegion才能得到真正可靠的本地时间 。
3.ZonedDateTime vs OffsetDateTime
- ZonedDateTime提供了toOffsetDateTime(),OffsetDateTime也提供了toZonedDateTime() , 他们互惠互利 , 互通有无 , 和睦相处 。 但是 , 一个ZonedDateTime在经历了toOffsetDateTime()、toZonedDateTime()再回到ZonedDateTime的时候已经不是原来的ZonedDateTime了 , 它把它原来的Australia/Canberra弄丢了 。 所以不要随便toOffsetDateTime() 。
- AJ此间的少年 医药级气流粉碎机
- AJ此间的少年医药级气流粉碎机
- 问董秘|三十二所、电科软信、华东电脑三者之间的发展定位和相互关系...,投资者提问:请问
- 化工业|今天,A股注意风格之间的切换!
- 时尚实验室|私藏民间的辣妹博主,这回全都给你们翻出来了!
- 有范装修设计|福州别墅设计 |郑陈顺:色彩定义空间的个性与气场,惊艳十足
- 每日粮油|每日粮油:中国粮食在进口与不进口之间的经济学分析
- |苹果型身材如何显瘦?学会穿搭技巧,拥有好身材
- 产业链|打破“意大利面条碗效应”,专家:RCEP大幅简化贸易协定间的差异
- 优尼尔家居|优尼尔:卫生间的色彩美学
