carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。
目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧
github.com/golang-module/carbon
gitee.com/golang-module/carbon
安装使用
Golang 版本大于等于1.16
// 使用 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")
Golang 版本小于1.16
// 使用 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"
)
更新日志
- 优化 Time2Carbon() 方法,从 time.Time 里提提取时区作为当前时区
- 新增 SetLocation() 方法
- 修复部分文档描述错误
- 增加意大利语支持,由 nicoloHevelop 翻译
有疑问加站长微信联系(非本文作者)

这个有向前兼容性问题, 以前我用的时候, 全部是time.Local的, 现在全部是time.UTC了, 我这边所有的代码都必须添加: .SetLocation(time.Local)
比如:
carbon.Time2Carbon(user.Time).SetLocation(time.Local).ToDateTimeString(),
我的使用场景:
升级carbon之前, Time2Carbon 是默认为time.Local的, 现在升级到2.19之后, 默认是time.UTC的了.
也许你这样改有你的理由吧, 但是真的破坏了向前兼容性. 需要在release着重说明一下, 不然已经上线的产品,升级之后全部出问题.
昨天我升级之后, 今天我的好多客户都说时间有问题,少了8个小时.