carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。
目前已被 [awesome-go](https://github.com/avelino/awesome-go#date-and-time "awesome-go") 收录,如果您觉得不错,请给个 star 吧
[github.com/golang-module/carbon](https://github.com/golang-module/carbon "github.com/golang-module/carbon")
[gitee.com/golang-module/carbon](https://gitee.com/golang-module/carbon "gitee.com/golang-module/carbon")
#### 安装使用
##### Golang 版本大于等于1.16
```go
// 使用 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
```go
// 使用 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](https://github.com/nicoloHevelop "nicoloHevelop") 翻译
> 优化 Time2Carbon() 方法,从 time.Time 里提提取时区作为当前时区
这个有向前兼容性问题, 以前我用的时候, 全部是time.Local的, 现在全部是time.UTC了, 我这边所有的代码都必须添加: .SetLocation(time.Local)
比如:
carbon.Time2Carbon(user.Time).SetLocation(time.Local).ToDateTimeString(),
我的使用场景:
1. user.Time字段以time.Time 存入mongo数据库(iso8601格式, utc时间);
2. 从mongo查询出来, user.Time 读出来, 里面的时区就是utc时间
升级carbon之前, Time2Carbon 是默认为time.Local的, 现在升级到2.19之后, 默认是time.UTC的了.
也许你这样改有你的理由吧, 但是真的破坏了向前兼容性. 需要在release着重说明一下, 不然已经上线的产品,升级之后全部出问题.
昨天我升级之后, 今天我的好多客户都说时间有问题,少了8个小时.
#1