Go-carbon v2.3.10 发布:一款简洁、语义化且开发者友好的 Golang 日期时间处理包

Go-carbon v2.3.10 发布:一款简洁、语义化且开发者友好的 Golang 日期时间处理包 Carbon 是一个简单、语义化且对开发者友好的 Go 语言日期时间处理包。

Carbon 已被 awesome-go 收录,如果您觉得它有帮助,请给我一个星标。

github.com/golang-module/carbon

安装

Go 版本 >= 1.16
go get -u github.com/golang-module/carbon/v2

import  "github.com/golang-module/carbon/v2"

更新日志

  • 修复了 json.Unmarshaler 解码包含 null 值的 JSON 字符串时的错误
  • 新增 ISO8601ZuluLayoutISO8601ZuluMilliLayoutISO8601ZuluMicroLayoutISO8601ZuluNanoLayout 常量
  • 新增 FormattedDateLayoutFormattedDayDateLayout 常量
  • 新增 ISO8601ZuluFormatISO8601ZuluMilliFormatISO8601ZuluMicroFormatISO8601ZuluNanoFormat 常量
  • 新增 FormattedDateFormatFormattedDayDateFormat 常量
  • 新增 ToIso8601ZuluStringToIso8601ZuluMilliStringToIso8601ZuluMicroStringToIso8601ZuluNanoString 方法
  • 新增 ToFormattedDateStringToFormattedDayDateString 方法
  • 新增 GoString 方法
  • 在使用 json.Unmarshaler 时支持包含 null 的 JSON 字符串 #225
  • 移除已弃用的 ToFormatString 方法,请使用 Format 方法替代
  • 移除已弃用的 ToLayoutString 方法,请使用 Layout 方法替代

更多关于Go-carbon v2.3.10 发布:一款简洁、语义化且开发者友好的 Golang 日期时间处理包的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Go-carbon v2.3.10 发布:一款简洁、语义化且开发者友好的 Golang 日期时间处理包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Go-carbon v2.3.10 的更新确实为日期时间处理带来了更多便利,特别是新增的 ISO 8601 Zulu 格式支持和格式化常量。以下是一些示例代码,展示如何使用新功能:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/golang-module/carbon/v2"
)

func main() {
    // 创建当前时间
    now := carbon.Now()
    
    // 使用新增的 ISO 8601 Zulu 格式方法
    fmt.Println("ISO8601 Zulu:", now.ToIso8601ZuluString())
    fmt.Println("ISO8601 Zulu with milliseconds:", now.ToIso8601ZuluMilliString())
    fmt.Println("ISO8601 Zulu with microseconds:", now.ToIso8601ZuluMicroString())
    fmt.Println("ISO8601 Zulu with nanoseconds:", now.ToIso8601ZuluNanoString())
    
    // 使用新增的格式化方法
    fmt.Println("Formatted date:", now.ToFormattedDateString())
    fmt.Println("Formatted day date:", now.ToFormattedDayDateString())
    
    // 使用新增的常量进行格式化
    fmt.Println("Using layout constant:", now.Layout(carbon.ISO8601ZuluLayout))
    fmt.Println("Using format constant:", now.Format(carbon.ISO8601ZuluFormat))
    
    // JSON 编解码示例(支持 null 值)
    type Event struct {
        Time carbon.Carbon `json:"time"`
    }
    
    // 解码包含 null 的 JSON
    jsonStr := `{"time": null}`
    var event Event
    if err := json.Unmarshal([]byte(jsonStr), &event); err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Decoded time:", event.Time)
    }
    
    // GoString 方法示例
    fmt.Printf("GoString output: %#v\n", now)
}

新版本中移除已弃用的 ToFormatStringToLayoutString 方法,现在应该统一使用 FormatLayout 方法:

// 旧方法(已移除)
// str := now.ToFormatString("2006-01-02 15:04:05")

// 新方法
str := now.Format("2006-01-02 15:04:05")

ISO 8601 Zulu 格式常量让时间序列化更加标准化:

// 使用常量进行序列化
data := map[string]string{
    "timestamp": now.Format(carbon.ISO8601ZuluFormat),
    "created_at": now.Layout(carbon.ISO8601ZuluLayout),
}

jsonData, _ := json.Marshal(data)
fmt.Println(string(jsonData))

这些改进使得 Go-carbon 在处理国际化时间格式和 JSON 交互时更加可靠和便捷。

回到顶部