
主要的内容是将 time.Time 按照不同的使用场景细分为 LocalDate LocalTime LocalDateTime OffsetDateTime 以及将来会有的 ZonedDateTime 等,将类型安全进行到底 xD 。
设计上尽量仿照 JSR-310 ,毕竟这个切分类型的思想也源自 JSR-310 。参考:threeten.org
对于某些可做出不同决策且个人不认为有明确优劣之分的设计,原则上遵守 JSR-310 习惯。
此外:
time.Location 抽象,自行携带时区数据库基础设施显得过于笨重,目前还在考虑具体解决方案。此外因为大部分对标 ZonedDateTime 的操作均可通过 Go 标准库的 time.Time 完成,所以这个部分可能优先级不高。IsZero() 判定,可放心使用 omitzero 标记。目前主要功能部分还剩下 Period Duration 以及时区相关等尚未完成,后续会尽量补全。
1 yb2313 5 小时 31 分钟前 别从 js 里抄就好 |
2 jjx 5 小时 23 分钟前 大部分代码使用 AI 完成 以后还是要小心点了 个人看法 |
3 Baymaxbowen 5 小时 3 分钟前 |
4 akiyamamio 4 小时 59 分钟前 gtime 就挺好用的了 |
5 sunmoon1983 4 小时 57 分钟前 感觉 carbon 和 gtime 都可以呀 |
6 apkapb 4 小时 55 分钟前 我怎么觉得做为自带的标准库已经够好用了,什么 Time{},Date(),以及 Duration ,完全够用了。 反倒是 Java 里面的,特别是结合 Android ,写得我难受死了 |
7 zoharSoul 4 小时 47 分钟前 很棒, 是不是支持 yyyy-MM-dd 这种表示法? |
8 Ketteiron 4 小时 34 分钟前 go 的时间库确实没有大而全的,一旦需要用到只能东拼西凑 如果只需要 Local ,我会用 https://github.com/googleapis/google-cloud-go/blob/main/civil/civil.go 但也就只有 Local |
9 iseki OP @Baymaxbowen js 有了,js-joda |
11 iseki OP @zoharSoul 暂时不提供自定义格式化功能,只提供标准格式,这个包主要用于运算和类型安全。考虑到 Go 的使用场景,在经典后端下,使用自定义格式化功能的地方,不多。 |
12 iseki OP @sunmoon1983 和 carbon gtime 设计思路不同,他们都没有采用 310 建模。这两个库和 time.Time 在类型上没有区别。 |
14 oom 3 小时 44 分钟前 6 ,star 了 |
15 cooooing 3 小时 32 分钟前 @Baymaxbowen 生草,一个没答对 |
16 wangtian2020 3 小时 31 分钟前 看到前几个 go 帖子我就想说了,go 连 dayjs 抄都抄不像,js 几 kb 就能实现的事儿 |
17 encounter2017 3 小时 23 分钟前 不支持 format 好,要不然又会有 2006-01-02 15:04:05 手动狗头 |
18 iseki OP @encounter2017 当然考虑到 JSR-310 包含这个功能,也许以后会支持上。 |