Golang carbon库1.5.0版本发布:修复已知问题并新增翻译支持

Golang carbon库1.5.0版本发布:修复已知问题并新增翻译支持 一个简单、语义化且对开发者友好的Go语言日期时间包

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

golang-module/carbon

更新日志

  • 优化多语言支持,无需将lang目录复制到项目目录
  • 移除setdir()方法,语言目录不允许自定义
  • lunar.ToString()方法重命名为lunar.ToDateString()
  • 修复ToDayDateTimeString()输出错误的问题
  • 修复lunar()在其他时区输出错误的问题
  • 单元测试覆盖率提升至99.9%
  • 新增SetYearNoOverflow()方法,用于设置年份,月份不会溢出
  • 新增SetMonthNoOverflow()方法,用于设置月份,月份不会溢出
  • 新增德语翻译文件lang/de.json,由benzammour翻译
  • 新增日语README文档readme.jp.md

更多关于Golang carbon库1.5.0版本发布:修复已知问题并新增翻译支持的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

Go-carbon 版本 1.5.2 已发布

Carbon 是一个简单、语义化且对开发者友好的 Golang 日期时间包。 Carbon 已被 awesome-go 收录,如果您觉得它有帮助,请给我一个星标。 github.com/golang-module/carbon

变更日志

  • 修复了 format()ParseByFormat() 方法无效的 bug
  • 将 carbon 结构体中的公共字段 LocLang 更改为私有字段 loclang
  • 添加 SetWeekStartsAt() 方法以设置一周的起始日期
  • 新增 Timestamp() 方法以获取秒级时间戳…

更多关于Golang carbon库1.5.0版本发布:修复已知问题并新增翻译支持的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Carbon 1.5.0版本的更新确实解决了一些关键问题并增强了国际化支持。以下是针对更新内容的专业分析:

1. 多语言支持优化 现在可以直接使用内置语言包,无需手动复制lang目录:

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

func main() {
    // 设置全局语言为德语
    carbon.SetLocale("de")
    
    // 或者针对特定实例设置
    c := carbon.Now().SetLocale("de")
    fmt.Println(c.DiffForHumans()) // vor 2 Sekunden
}

2. 修复的时区问题 lunar()方法在其他时区的输出错误已修复:

// 1.5.0之前版本在非UTC时区可能出错
carbon.SetTimezone("Asia/Shanghai")
lunar := carbon.Now().Lunar()
fmt.Println(lunar.ToDateString()) // 正确输出农历日期

3. 新增的非溢出设置方法 SetYearNoOverflow()和SetMonthNoOverflow()方法:

c := carbon.Parse("2023-01-31")

// 传统方法会导致月份溢出
c.SetMonth(2) // 2023-03-03(自动调整)

// 新方法保持日期有效性
c.SetMonthNoOverflow(2) // 2023-02-28(不会溢出到三月)
c.SetYearNoOverflow(2024) // 2024-02-28(闰年处理)

4. ToDayDateTimeString()修复 修复了格式化输出问题:

c := carbon.Parse("2023-12-25 14:30:45")
fmt.Println(c.ToDayDateTimeString()) 
// 正确输出: Mon, Dec 25, 2023 2:30 PM

5. 单元测试覆盖率提升 99.9%的测试覆盖率确保了包的稳定性:

// 新增的测试用例覆盖了边界情况
func TestCarbon_NoOverflow(t *testing.T) {
    c := carbon.Parse("2023-01-31")
    c.SetMonthNoOverflow(2)
    assert.Equal(t, "2023-02-28", c.ToDateString())
}

6. 翻译文件结构 新增的德语翻译文件示例:

{
    "months": "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember",
    "short_months": "Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.",
    "weekdays": "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag",
    "short_weekdays": "So._Mo._Di._Mi._Do._Fr._Sa.",
    "am": "AM",
    "pm": "PM"
}

这些更新使Carbon在日期时间处理上更加可靠,特别是多语言支持和农历计算的改进,对于国际化项目很有价值。移除setdir()方法虽然限制了自定义语言目录,但简化了部署流程。

回到顶部