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 实例
  • 修复了 ToMonthStringToShortMonthStringToWeekStringToShortWeekStringSeasonConstellation 方法中并发读取和写入映射的问题
  • 提高了 unitbenchmark 测试的覆盖率

更多关于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在保持轻量级的同时,提供了更稳定和丰富的日期时间处理功能。农历支持的加入特别值得关注,这为需要处理中国传统节日的应用提供了便利。

回到顶部