Go-carbon v2.2.6发布:一个简单、语义化且开发者友好的Golang日期时间处理包
Go-carbon v2.2.6发布:一个简单、语义化且开发者友好的Golang日期时间处理包 Carbon 是一个简单、语义化且对开发者友好的 Golang 日期时间包。
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"
更新日志
- 修复了
DiffInYears和Age方法中的错误 #181 - 修复了
json.Unmarshal后丢失时区的错误 #178 - 将
CreateFromStdTime方法从carbon.go移至creator.go - 将
ToStdTime方法从carbon.go移至outputer.go - 将已弃用的方法
FromStdTime、Time2Carbon和Carbon2Time移至deprecated.go - 将
stretchr/testify更新至 v1.8.4
更多关于Go-carbon v2.2.6发布:一个简单、语义化且开发者友好的Golang日期时间处理包的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Go-carbon v2.2.6发布:一个简单、语义化且开发者友好的Golang日期时间处理包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Go-carbon v2.2.6 的发布进一步提升了包的稳定性和代码组织。修复 DiffInYears 和 json.Unmarshal 的时区问题非常关键,这直接影响了核心功能的可靠性。方法的重构(如移动 CreateFromStdTime)和弃用方法的集中管理,体现了更清晰的模块化设计。
以下是一些常见使用示例,展示了其语义化API的优势:
package main
import (
"encoding/json"
"fmt"
"github.com/golang-module/carbon/v2"
)
func main() {
// 1. 创建当前时间(自动处理时区)
now := carbon.Now()
fmt.Println(now.ToDateTimeString()) // 输出: 2023-10-01 15:04:05
// 2. 修复后的 DiffInYears 使用
birthday := carbon.CreateFromDate(1990, 1, 1)
age := birthday.DiffInYears(now)
fmt.Printf("年龄: %d 岁\n", age)
// 3. JSON 序列化/反序列化(已修复时区丢失)
type Event struct {
Time carbon.Carbon `json:"time"`
}
event := Event{Time: carbon.Now().SetTimezone("Asia/Shanghai")}
data, _ := json.Marshal(event)
fmt.Println(string(data)) // 输出: {"time":"2023-10-01 15:04:05 +08:00"}
var decodedEvent Event
json.Unmarshal(data, &decodedEvent)
fmt.Println(decodedEvent.Time.Timezone()) // 输出: Asia/Shanghai
// 4. 语义化日期操作
nextWeek := now.AddWeek()
fmt.Println(nextWeek.ToDateString())
// 5. 与标准 time.Time 互操作
stdTime := now.ToStdTime()
carbonTime := carbon.CreateFromStdTime(stdTime)
fmt.Println(carbonTime.ToDateTimeString())
}
此次更新中,CreateFromStdTime 和 ToStdTime 的方法位置调整不影响功能,但需要开发者注意导入路径。已弃用的方法(如 FromStdTime)仍可在 deprecated.go 中找到,但建议迁移到新方法。依赖库 testify 的版本更新也带来了更好的测试兼容性。

