V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
gouguoyin
V2EX  ›  Go 编程语言

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

  •  
  •   gouguoyin · 2023-12-25 10:50:59 +08:00 · 1247 次点击
    这是一个创建于 369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 输出不同格式字符串

    6 条回复    2023-12-25 12:00:36 +08:00
    qloog
        1
    qloog  
       2023-12-25 11:31:13 +08:00
    紧跟节日步伐👍🏻😎,圣诞快乐 🎅🏻 🎄
    gouguoyin
        2
    gouguoyin  
    OP
       2023-12-25 11:40:40 +08:00
    @qloog 节日快乐
    9136347
        3
    9136347  
       2023-12-25 11:43:00 +08:00
    用得很多,看到这个,暂停登录,来表扬一下。
    gouguoyin
        4
    gouguoyin  
    OP
       2023-12-25 11:47:09 +08:00
    @9136347 感谢支持,欢迎提出宝贵意见
    wudanyang
        5
    wudanyang  
       2023-12-25 11:58:45 +08:00
    非常好用,感谢
    gouguoyin
        6
    gouguoyin  
    OP
       2023-12-25 12:00:36 +08:00
    @wudanyang 感谢支持,欢迎提出宝贵意见
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 13:46 · PVG 21:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.