carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。
目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧
github.com/golang-module/carbon
gitee.com/golang-module/carbon
// 使用 github 库
go get -u github.com/golang-module/carbon/v2
import "github.com/golang-module/carbon/v2"
// 使用 gitee 库
go get -u gitee.com/golang-module/carbon/v2
import "gitee.com/golang-module/carbon/v2"
// 使用 github 库
go get -u github.com/golang-module/carbon
import "github.com/golang-module/carbon"
// 使用 gitee 库
go get -u gitee.com/golang-module/carbon
import "gitee.com/golang-module/carbon"
ToWeekString
和 ToShortWeekString
方法忽略 SetWeekStartsAt
设置的 bugParse
方法更多解析格式的支持timezone[len(timezone)-1]
更改为 timezone[0]
Fastest
方法的单元测试覆盖率 1
Masoud2023 356 天前 1
这 api 做的真好看, 赞
|
2
zyxk 356 天前 1
很不错, 说明很清晰,虽然还没用过
|
3
fgwmlhdkkkw 356 天前
Add(amount int, unit Unit)
Sub(amounr int, unit Unit) |
4
pkoukk 356 天前
提一个小小的需求:希望有个 API 可以提供,指定 time 的这个月,有多少天。
|
5
gouguoyin OP @fgwmlhdkkkw 这样处理会面临溢出问题,有些方法是需要处理月份是否溢出问题,比如 `2023-01-31`,增加一个月,就需要考虑是否跨月。目前是分成两类方法,如 `AddMonths` 和 `AddMonthsNoOverflow`
```go carbon.Parse("2020-01-31 13:14:15").AddMonth().ToDateTimeString() // 2020-03-02 13:14:15 carbon.Parse("2020-01-31 13:14:15").AddMonthNoOverflow().ToDateTimeString() // 2020-02-29 13:14:15 ``` |
6
gouguoyin OP @pkoukk 已有,更多查看文档 https://github.com/golang-module/carbon#getter
carbon.Parse("2020-02-01 13:14:15").DaysInMonth() // 29 carbon.Parse("2020-04-01 13:14:15").DaysInMonth() // 30 carbon.Parse("2020-08-01 13:14:15").DaysInMonth() // 31 |
9
sakuramanstein 356 天前 via Android
为啥叫 carbon ,最近需求时间处理有点多,正好看看
|
10
RedisMasterNode 356 天前
已 star 建议补充 benchmark
|
11
lesismal 356 天前
|
12
fgwmlhdkkkw 356 天前
@gouguoyin #5 至少提供这样的通用接口,剩下的是用户的责任。
|
13
CEBBCAT 356 天前
感谢分享,看到两边 go.mod 的 package 是不同的,是手动维护的吗?或者用脚本替换?
|
14
ruooooooli 356 天前
为啥我这样引入不了
|
15
ruooooooli 356 天前
|
17
gouguoyin OP @RedisMasterNode 后面会补充的
|
18
CEBBCAT 356 天前
|
19
CEBBCAT 356 天前
@ruooooooli #15 我 go get github.com/golang-module/carbon/v2 可以的,你那边报什么错误?
|
20
moell 356 天前 1
@sakuramanstein PHP 有个 composer 包叫 carbon ,非常好用,API 参考了
|
21
Rache1 356 天前
@sakuramanstein #9 目测是 PHP 转 GO 的,Carbon 在 PHP 这边是一个很知名的包。
大致看了一下 API ,几乎都一样了。 原包下面提到来自: Radiocarbon dating - Wikipedia https://en.wikipedia.org/wiki/Radiocarbon_dating?useskin=vector |
22
ruooooooli 356 天前
@CEBBCAT #19
go get -u github.com/golang-module/carbon/v2 cannot find package "github.com/golang-module/carbon/v2" in any of: /opt/homebrew/Cellar/[email protected]/1.18.10/libexec/src/github.com/golang-module/carbon/v2 (from $GOROOT) /Users/zk/Work/code/go/src/github.com/golang-module/carbon/v2 (from $GOPATH) 难道是要开启 gomodule 么 |
24
gouguoyin OP @ruooooooli 必须开启 go module
|
25
ruooooooli 356 天前
@gouguoyin #24 😄好的我试下
|
26
gouguoyin OP @ruooooooli go 从 1.11 后就开始使用 module 作为唯一包管理工具
|
28
gouguoyin OP @RedisMasterNode v2.3.1 已加上 benchmark
|