我们编程时多少会遇到需要处理“时间”的情况,在各语言平台下通常也会内置时间相关的API。“时间”作为一个问题领域:第一,非常常见;第二,往往比我们想象的要复杂!因此程序员常会因为轻视它而踩坑。实际上,就连语言和库设计者也不能例外。JavaScript语言在1995年诞生时因为只有十天时间,并且因为管理层要求“像Java”,所以内建的Date直接照搬了Java 1.0中java.util.Date的设计。然而该API却非常糟糕,以至于在1997年Java 1.1中就被deprecated了。不幸的是,因为种种原因,此API却一直在JavaScript中沿袭了20多年至今。这些年以来,在JavaScript社区中出现了许多非常优秀的类库和框架,2011年诞生的Moment.js作为一个仅仅专门用于时间处理的库,也忝列其中。然而Moment.js至今仍然有一些重大缺陷。另一方面,Java 1.1之后的java.util.Calendar也仍然一直被诟病,从而出现了如Joda-Time这样的库,并成为了事实标准。可是Joda-Time也不是没有问题。最终直到2014年发布的Java 8,才包含了重新设计的java.time包。以Java和JavaScript为代表的主流工业语言及其社区的历史经验证明,设计一个好的时间API远比我们想象的要困难得多。本次分享将以JavaScript语言标准新的Temporal提案为核心,结合前述历史,探讨“时间”这一领域的各种编程问题和API设计问题。
浏览7537次
浏览1299次
浏览3397次
浏览5479次
浏览4281次
浏览4720次
2025-09-04 广州
2025-09-12 上海
2025-07-09 南京
2025-08-22 深圳
打开微信扫一扫,分享到朋友圈
Text