您现在的位置是:首页 > 文章详情

go-carbon v2.3.1 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

日期:2023-12-29点击:147

carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,支持链式调用、农历和 gorm、xorm 等主流 orm。

目前已被 awesome-go-cn 收录,如果您觉得不错,请给个 star 吧

github.com/golang-module/carbon

gitee.com/golang-module/carbon

定义模型

 type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday0 Carbon `json:"birthday0"` Birthday1 Carbon `json:"birthday1" carbon:"date"` Birthday2 Carbon `json:"birthday2" carbon:"time"` Birthday3 Carbon `json:"birthday3" carbon:"dateTime"` Birthday4 Carbon `json:"birthday4" carbon:"date" tz:"PRC"` Birthday5 Carbon `json:"birthday5" carbon:"time" tz:"PRC"` Birthday6 Carbon `json:"birthday6" carbon:"dateTime" tz:"PRC"` } 或 type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday0 Carbon `json:"birthday0"` Birthday1 Carbon `json:"birthday1" carbon:"layout:2006-01-02"` Birthday2 Carbon `json:"birthday2" carbon:"layout:15:04:05"` Birthday3 Carbon `json:"birthday3" carbon:"layout:2006-01-02 15:04:05"` Birthday4 Carbon `json:"birthday4" carbon:"layout:2006-01-02" tz:"PRC"` Birthday5 Carbon `json:"birthday5" carbon:"layout:15:04:05" tz:"PRC"` Birthday6 Carbon `json:"birthday6" carbon:"layout:2006-01-02 15:04:05" tz:"PRC"` } 或 type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday0 Carbon `json:"birthday0"` Birthday1 Carbon `json:"birthday1" carbon:"format:Y-m-d"` Birthday2 Carbon `json:"birthday2" carbon:"format:H:i:s"` Birthday3 Carbon `json:"birthday3" carbon:"format:Y-m-d H:i:s"` Birthday4 Carbon `json:"birthday4" carbon:"format:Y-m-d" tz:"PRC"` Birthday5 Carbon `json:"birthday5" carbon:"format:H:i:s" tz:"PRC"` Birthday6 Carbon `json:"birthday6" carbon:"format:Y-m-d H:i:s" tz:"PRC"` }

实例化模型

 now := Parse("2020-08-05 13:14:15", PRC) person := Person { Name: "gouguoyin", Age: 18, Birthday0: now, Birthday1: now, Birthday2: now, Birthday3: now, Birthday4: now, Birthday5: now, Birthday6: now, }

JSON 编码

 loadErr := carbon.LoadTag(&person) if loadErr != nil { // 错误处理 log.Fatal(loadErr) } data, marshalErr := json.Marshal(person) if marshalErr != nil { // 错误处理 log.Fatal(marshalErr) } fmt.Printf("%s", data) // 输出 { "name": "gouguoyin", "age": 18, "birthday0": "2020-08-05 13:14:15", "birthday1": "2020-08-05", "birthday2": "13:14:15", "birthday3": "2020-08-05 13:14:15", "birthday4": "2020-08-05", "birthday5": "213:14:15", "birthday6": "2020-08-05 13:14:15" }

JSON 解码

 str := `{ "name": "gouguoyin", "age": 18, "birthday0": "2020-08-05 13:14:15", "birthday1": "2020-08-05", "birthday2": "13:14:15", "birthday3": "2020-08-05 13:14:15", "birthday4": "2020-08-05", "birthday5": "213:14:15", "birthday6": "2020-08-05 13:14:15" }` var person Person loadErr := carbon.LoadTag(&person) if loadErr != nil { // 错误处理 log.Fatal(loadErr) } unmarshalErr := json.Unmarshal([]byte(str), &person) if unmarshalErr != nil { // 错误处理 log.Fatal(unmarshalErr) } fmt.Sprintf("%s", person.Birthday0) // 2002-08-05 13:14:15 fmt.Sprintf("%s", person.Birthday1) // 2020-08-05 fmt.Sprintf("%s", person.Birthday2) // 13:14:15 fmt.Sprintf("%s", person.Birthday3) // 2002-08-05 13:14:15 fmt.Sprintf("%s", person.Birthday4) // 2002-08-05 fmt.Sprintf("%s", person.Birthday5) // 13:14:15 fmt.Sprintf("%s", person.Birthday6) // 2002-08-05 13:14:15

更新日志

  • 修复在 Now 方法中设置测试时间时 testNow 为 0,造成 IsSetTestNow 方法返回 false 的 bug
  • 添加性能测试文件 xxx_bench_test.go
  • 增加格式模板常量,如 DateTimeFormat, DateFormat, TimeFormat, AtomFormat, ANSICFormat
  •  loadTag 函数中 carbon 标签增加对 datetimedatetimeiso8601 等字符串的支持
  •  loadTag 函数中新增 tz 标签,用于设置时区
  •  ParseByLayout 方法中添加对 UVXZ 格式化符号的支持
  •  ToFormatString  Format 方法中添加对 vux 格式符号的支持
  • 新增 LoadTag 方法利用反射通过设置 tag 进行 json 自定义编码和解码
  •  ClearTestNow 方法重命名为 UnSetTestNow
  •  HasTestNow 方法重命名为 IsSetTestNow
  •  xxx_test.go 文件重命名为 xxx_unit_test.go
  •  json.go 文件重命名为 encoding.go, json_test.go 文件重命名为 encoding_unit_test.go
  •  Closest  Farthest 方法从 traveler.go 文件移动到 extremum.go,从 traveler_test.go 文件移动到 extremum_unit_test.go
  •  SetTestNow 方法中接收者类型从 结构体 更改为 指针
原文链接:https://www.oschina.net/news/273230/go-carbon-2-3-1-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章