go-carbon v2.3.0 圣诞特别版发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

gouguoyin · · 592 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

go-carbon v2.3.0 圣诞节特别版发布,这应该是 2023 年的最后一个版本,祝大家圣诞节快乐! 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" ``` ##### JSON ###### 定义模型 ```go type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday carbon.Carbon `json:"birthday" carbon:"layout:2006-01-02"` GraduatedAt carbon.Carbon `json:"graduated_at" carbon:"layout:15:04:05"` CreatedAt carbon.Carbon `json:"created_at" carbon:"layout:2006-01-02 15:04:05"` } ``` 或 ```go type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday carbon.Carbon `json:"birthday" carbon:"format:Y-m-d"` GraduatedAt carbon.Carbon `json:"graduated_at" carbon:"format:H:i:s"` CreatedAt carbon.Carbon `json:"created_at" carbon:"format:Y-m-d H:i:s"` } ``` ###### 实例化模型 ```go now := Parse("2020-08-05 13:14:15", PRC) person := Person { Name: "gouguoyin", Age: 18, Birthday: now, GraduatedAt: now, CreatedAt: now, } ``` ###### JSON 编码 ```go err1 := carbon.LoadTag(&person) if err1 != nil { // 错误处理 log.Fatal(err1) } data, err2 := json.Marshal(person) if err2 != nil { // 错误处理 log.Fatal(err2) } fmt.Printf("%s", data) // 输出 { "name": "gouguoyin", "age": 18, "birthday": "2020-08-05", "graduated_at": "13:14:15", "created_at": "2020-08-05 13:14:15" } ``` ###### JSON 解码 ```go str := `{ "name": "gouguoyin", "age": 18, "birthday": "2020-08-05", "graduated_at": "13:14:15", "created_at": "2020-08-05 13:14:15" }` var person Person err1 := carbon.LoadTag(&person) if err1 != nil { // 错误处理 log.Fatal(err1) } err2 := json.Unmarshal([]byte(str), &person) if err2 != nil { // 错误处理 log.Fatal(err2) } fmt.Sprintf("%s", person.Birthday) // 2002-08-05 fmt.Sprintf("%s", person.GraduatedAt) // 13:14:15 fmt.Sprintf("%s", person.CreatedAt) // 2002-08-05 13:14:15 ``` ##### 更新日志 - 正式移除弃用的 `FromStdTime`, `Time2Carbon`, `Carbon2Time` 方法 - 将 `ToANSICString` 方法更名为 `ToAnsicString` - 将 `CreateFromDateTime` 方法中的毫秒设置为 0 - 将 `CreateFromDate` 方法中的时分秒设置为 0 - 修复 `DiffInMonths` 方法错误 - 将 `GormDataType` 方法从 `json.go` 文件移动到 `database.go` 文件 - 新增 LoadTag 方法,利用反射通过设置 `tag` 进行 `json` 自定义编码和解码 - `String` 方法根据设置的不同` tag` 输出不同格式字符串

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

592 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传