拨开时间的迷雾
DDD中最重要的一个过程就是统一语言 。 和客户沟通时间问题的时候 , 可以先把一些时间的概念统一一下 。
每天早上9:00到公司 , 迟到要罚款;中午12:00去吃饭 , 慢了好吃的就没有了;晚上18:00要回家 , 晚了老婆不开心 。
我们熟练的使用着时间 , 毕竟小学二年级课本上就开始讲时间了 。
可时间究竟是什么?
- 哲学家认为过去、现在、未来等时间概念只不过是人的幻觉 。
- 牛顿说:绝对钟的读数就是时间 。
- 爱因斯坦说 , 时间和空间一起 , 构成了被称为时空的实体 。
地球上的时间
大神考虑的内容要么是心理的 , 要么是宇宙的 , 要么就是微观的 。 其实我们了解地球上的时间就够了 。
本文插图
一般人都知道时区:为了克服时间上的混乱 , 1884年在华盛顿召开的一次国际经度会议上 , 规定将全球划分为24个时区(东、西各12个时区) 。
客户的疑问
有了时区 , 已经可以解决地球上一般问题了 。 但是面对全球业务的客户 , 他们还是会提出很多问题:
- 为什么要问我使用哪个时区显示时间?上游发给我们什么就显示什么呀?
- 计算两个时间差几天 , 为什么需要选择使用哪个时区?(客户的规则2019-01-01 23:59:59到2019-01-02 00:00:00 , 算一天)
- 上游给了时间和时区两个字段 , 我们存下来后 , 数据库里面显示也是正常的 , 为什么就没有时区了?
给客户建立这样的时间概念:本地时间、时区、时区时间、绝对时间 。
- 本地时间:一般人讲的时间都是本地时间 , 它只在当地有效 。 类似2019-12-24 10:22 , 北京的这个时间和伦敦的这个时间可不是一个时间 。
- 时区:使用相同本地时间的区域 。 类似Asia/Shanghai,America/Havana,为了便于理解我经常标记为UTC+8 , UTC-8 , 这两种标记方法并不等效 , 不是一个概念 , 客户一般不关心这个 , 不用说 , 程序员自己心里明白就好 , 后面讲差别 。
- 时区时间:带有时区的时间 , 可以认为是可读的绝对时间 。 类似2019-12-24 10:22 (Asia/Shanghai),同样我也会写成2019-12-24 10:22 UTC+8 , 因为带有了时区信息 , 这些时间就可以在不同时区间转换了 。
- 绝对时间:也可以叫时间戳 , 是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 。 尽量少讲绝对时间 , 有些客户不太理解这个 。
有了这些基本概念后 , 围绕着这些基本概念解答问题 , 而且主要以举例子的形式讲解 。
- 问题1:不同时区显示的时间不同 , 比如如果一个货物是在英国中午12:00发货 , 此时是中国的20:00 , 那么一个中国用户想要看到的是12:00还是20:00呢?
如果客户选择20:00 , 说明用户关心绝对时间 , 但是绝对时间没法显示 , 还是要选择一个时区 , 所以使用用户最舒服的时区 , 他自己的时区 。
推荐阅读
- 免疫力|科学家发现免疫系统与长相之间的关系:越健康的人越有吸引力
- 酒店|男子隔离被安排到花果山主题酒店 房间的山洞风格让网友尖叫:太逼真
- 演讲|罗振宇2022跨年演讲《时间的朋友》来了:首次无观众演讲 已紧急退票
- 男孩在隔离酒店住了7天,离开时留下字条……
- 微软|索尼微软两巨头接连表态:将重新评估与动视暴雪之间的合作关系
- 人体器官捐献协调员:奔走在生死间的“摆渡人”
- 烟台抗疫,这一幕破防了!凌晨4点,她蜷缩在储物间的纸箱里睡着了
- 高铁|时速600公里高速磁浮列车来了:填补高铁、飞机之间的空白
- 电子烟|拨开校园周围的电子烟迷雾 像是一个个摘不掉的瘤子
- 61年!全国失散最长时间的兄弟团圆了
