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

2023-12-25 11:37:28

go-carbon v2.3.0 圣诞节特别版发布,这应该是 2023 年的最后一个版本,祝大家圣诞节快乐!

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"
JSON
定义模型
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"`
}

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"`
}
实例化模型
now := Parse("2020-08-05 13:14:15", PRC)
person := Person {
    Name:        "gouguoyin",
    Age:         18,
    Birthday:    now,
    GraduatedAt: now,
    CreatedAt:   now,
}
JSON 编码
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 解码
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 输出不同格式字符串

文章来源:https://blog.csdn.net/angelstreet23/article/details/135195039
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。