Go-carbon v2.3.6 发布:轻量级语义化的 Golang 日期时间处理包
Go-carbon v2.3.6 发布:轻量级语义化的 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"
更新日志
- 将日历提取为独立的子包
- 新增
CreateFromLunar方法,用于从农历日期和时间创建Carbon实例 - 修复了
ToMonthString、ToShortMonthString、ToWeekString、ToShortWeekString、Season、Constellation方法中并发读取和写入映射的问题 - 提高了
unit和benchmark测试的覆盖率
更多关于Go-carbon v2.3.6 发布:轻量级语义化的 Golang 日期时间处理包的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Go-carbon v2.3.6 发布:轻量级语义化的 Golang 日期时间处理包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Go-carbon v2.3.6 的更新确实解决了一些关键问题,特别是并发安全方面的改进。将日历功能独立为子包是个不错的架构决策,这有助于代码的模块化。新增的农历支持对于需要处理中国传统日历的应用来说非常实用。
以下是一些典型的使用示例:
package main
import (
"fmt"
"github.com/golang-module/carbon/v2"
)
func main() {
// 基本日期时间操作
now := carbon.Now()
fmt.Printf("当前时间: %s\n", now.ToDateTimeString())
// 加减时间
nextWeek := now.AddWeek()
fmt.Printf("一周后: %s\n", nextWeek.ToDateTimeString())
// 农历功能示例
lunarDate := carbon.CreateFromLunar(2024, 1, 1, 0, 0, 0, false)
fmt.Printf("农历2024年正月初一对应的公历: %s\n", lunarDate.ToDateString())
// 格式化输出
fmt.Printf("自定义格式: %s\n", now.Format("Y年m月d日 H:i:s"))
// 星座和季节
birthday := carbon.CreateFromDate(1990, 8, 15)
fmt.Printf("星座: %s\n", birthday.Constellation())
fmt.Printf("季节: %s\n", birthday.Season())
}
并发安全修复后的方法现在可以安全地在goroutine中使用:
func concurrentDateOperations() {
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func(idx int) {
defer wg.Done()
date := carbon.Now().AddDays(idx)
// 这些方法现在可以安全并发调用
monthStr := date.ToMonthString()
weekStr := date.ToWeekString()
season := date.Season()
fmt.Printf("Goroutine %d: %s, %s, %s\n",
idx, monthStr, weekStr, season)
}(i)
}
wg.Wait()
}
新的子包结构使用示例:
import (
"github.com/golang-module/carbon/v2"
"github.com/golang-module/carbon/v2/calendar"
)
func useCalendarPackage() {
// 使用独立的日历包
cal := calendar.New()
holidays := cal.GetHolidays(2024)
fmt.Printf("2024年节假日: %v\n", holidays)
}
这些改进使得go-carbon在保持轻量级的同时,提供了更稳定和丰富的日期时间处理功能。农历支持的加入特别值得关注,这为需要处理中国传统节日的应用提供了便利。

