Skip to content

更新日志 ​

v2.6.18 (2026-09-28) ​

  • 修复 Format 方法处理末尾转义字符时可能发生越界访问的 bug
  • 修复设置非周一为一周开始日期时,ToWeekString、ToShortWeekString 和 Format 方法返回星期名称错误的 bug
  • 修复向已有时间值的数据库字段扫描 NULL 时未清空原值的 bug
  • 新增对哈萨克语的本地化语言支持(lang/kk.json)
  • 优化语言实例和语言资源的缓存与共享机制,通过写时复制减少内存分配
  • 优化月份、星期、季节和星座本地化资源查询,避免每次调用分割字符串
  • 优化农历日期转换,预计算年度天数和累计天数表,提升转换性能
  • 将 github.com/stretchr/testify 从 v1.11.1 升级到 v1.12.1
  • 将 github/codeql-action 从 v4.37.4 升级到 v4.38.1
  • 完善 CI 测试流程,在 PR 上运行完整测试和竞态检测,并仅在 push 时生成和上传覆盖率

v2.6.17 (2026-08-09) ​

  • 修正伊斯兰星期名称拼写错误,将 Jumaat 修改为 Jumat
  • 修复公历与希伯来历之间的换算计算异常问题
  • 将 README 文档统一替换为 NRG 标准化模板
  • 清理 README 内冗余广告外链,移除已废弃的 Go Report Card 状态徽章
  • 将 github/codeql-action 从 v4 升级至 v4.37.4
  • 将 actions/setup-go 从 v6 升级至 v7
  • 将 actions/checkout 从 v6 升级至 v7
  • 将 codecov/codecov-action 从 v5 升级至 v6
  • 将 codecov/codecov-action 从 v6 升级至 v7

v2.6.16 (2026-01-28) ​

  • 修复 Format 方法中u、v、x符号解析错误的 bug
  • 将 actions/checkout 从 v5 升级到 v6

v2.6.15 (2025-11-15) ​

  • 移除 difference.go 文件的 DiffAbsInDuration 方法里使用的从 go1.19 才有的 Abs 方法
  • 修复 荷兰语 本地化语言文件(lang/nl.json)里 weeks 字段里重复的 Zondag 错误
  • 增加 HttpLayout, HttpFormat 常量以及 ToHttpString 方法
  • 增加对 蒙古语 的本地化语言支持(lang/mn.json)
  • 增加对 南非语 的本地化语言支持(lang/af.json)

v2.6.14 (2025-10-28) ​

  • 优化 traveler.go 文件里时间增减系列方法通过复制实例来保证不可变性,以避免修改原始实例
  • 增加对 希腊语 的本地化语言支持(lang/el.json)
  • 增加对 芬兰语 的本地化语言支持(lang/fi.json)
  • 增加对 缅甸语 的本地化语言支持(lang/my.json)

v2.6.13 (2025-10-15) ​

  • 在 language.go 的 SetLocale 方法中使用 sync.Once 确保语言文件只加载一次,使用 sync.Map 进行线程安全的缓存
  • 在 helper.go 的 format2layout 方法中为转义字符处理添加边界检查,防止越界访问导致的 panic

v2.6.12 (2025-09-16) ​

  • 将 golang 环境依赖从 1.21 降低到 1.18
  • 将 testify 测试框架从 v1.10.0 升级到 v1.11.1
  • 在 type_carbon.go 文件 UnmarshalJSON 方法中设置 isEmpty 标志以表示空值
  • 使用 sync.Map 实现高性能并发缓存
  • 修复潜在的竞态条件和空指针解引用问题,提高并发安全性

v2.6.11 (2025-07-18) ​

  • 将 Sleep 由结构体方法更改成全局方法
  • 重构 波斯历 并添加基准测试文件
  • 重构 中国农历 并添加基准测试文件
  • 重构 儒略日/简化儒略日 并添加基准测试文件
  • 新增 希伯来历 支持并添加单元测试和基准测试文件
  • 新增整体性能测试报告文件

v2.6.10 (2025-07-07) ​

  • 将日语翻译文件从 jp.json 改成 ja.json,说明文档从 README.jp.md 更名为 README.ja.md,以符合 ISO639-1 标准
  • 移除已弃用的 ParseWithLayouts 方法,用 ParseByLayouts 方法替代
  • 移除已弃用的 ParseWithFormats 方法,用 ParseByFormats 方法替代
  • 移除已弃用的 CleanTestNow 方法,用 ClearTestNow 方法替代
  • 移除 ParseByLayout 和 ParseByFormat 方法对时间戳字符串的解析支持,解析时间戳请使用 CreateFromTimestamp, CreateFromTimestampMilli, CreateFromTimestampMicro, CreateFromTimestampNano 方法
  • 优化 helper.go 里 getAbsValue 方法,用位操作替换条件判断
  • 优化 frozen.go 文件里时间冻结相关方法,用原子操作减少锁竞争,优化内存分配
  • 优化基准测试文件,覆盖串行测试、并行测试和并发测试
  • 新增韩语文档 README.ko.md
  • 新增 Sleep 方法及相关单元测试、基准测试和示例文件
  • 新增数字常量,如 MaxYear, MinYear, MaxMonth, MinMonth, MaxDay, MinDay 等,并使用这些常量替换硬编码

v2.6.9 (2025-06-28) ​

  • 移除对 gorm 的 GormDataType 接口的实现

v2.6.8 (2025-06-12) ​

  • 解析时如果布局模板或格式模板为空时,返回错误
  • 在 tests 中将 gorm.io/gorm 从 1.21.1 升级到 1.30.0
  • 在 tests 中将 gorm.io/driver/mysql 从 1.5.7 升级到 1.6.0
  • 在 tests 中将 gorm.io/driver/postgres 从 1.5.7 升级到 1.6.0
  • 在 tests 中将 gorm.io/driver/sqlite 从 1.5.7 升级到 1.6.0
  • 在 type_builtin.go 中将 DateTimeType 重命名为dateTimeType,将 DateTimeXXXType 重命名为 dateTimeXXXType
  • 在 type_builtin.go 中将 DateType 重命名为dateType,将 DateXXXType 重命名为 dateXXXType
  • 在 type_builtin.go 中将 TimeType 重命名为timeType,将 TimeXXXType 重命名为 timeXXXType
  • 简化 READEME 文件,将详细使用说明和示例用法迁移到 官方网站
  • 添加 HelloGitHub 徽章链接

v2.6.7 (2025-05-26) ​

  • String 方法去掉对空值的检查
  • 将 type_interface.go 更名为 interfaces.go
  • 将Closest/Farthest 方法第 2 个参数改成可选参数
  • 新增 ZeroValue/EpochValue 方法
  • 新增 DataTyper 接口和 DataType方法并让内置类型实现 DataTyper 接口

v2.6.6 (2025-05-19) ​

  • 修复在 window 平台无法找到语言文件的 bug
  • 修复在创建新的 Carbon 实例时丢失layout、weekStartsAt、weekendDays 和 `lang 值的错误
  • 修复 StartOfWeek 和 EndOfWeek方法意外更改原始 Carbon实例的错误
  • 新增对 xorm 的 curd 集成测试,目前已覆盖 MySQL/Postgres/SQLite
  • 在 ci 中新增 window 系统的单元测试

v2.6.5 (2025-05-14) ​

  • 将 Go 最低版本要求从 1.18 提升到 1.21
  • Carbon 结构体的 SetLanguage 方法增加对非法 Language 结构体的判断
  • Carbon 结构体的Parse 方法增加对 Postgres/SQLite 时间格式字符串的解析支持
  • Carbon 结构体的Parse/ParseByLayout/ParseByFormat方法解析 空字符串 时返回值从 nil 更改成空 carbon
  • Carbon 结构体新增 IsEmpty 方法用于判断是否为空 carbon
  • Carbon 结构体新增 ClearTestNow 方法替代 CleanTestNow, CleanTestNow 方法未来将移除
  • Carbon 结构体新增 ParseByLayouts 方法替代 ParseWithLayouts, ParseWithLayouts 方法未来将移除
  • Carbon 结构体新增 ParseByFormats 方法替代 ParseWithLayouts, ParseWithFormats 方法未来将移除
  • Carbon 结构体移除 GormDataType 方法, 并将 Value/MarshalJSON 方法从指针接收者改成值接收者
  • LayoutType[T] 结构体移除 GormDataType 方法, 并将 Value/MarshalJSON 方法从指针接收者改成值接收者
  • FormatType[T] 结构体移除 GormDataType 方法, 并将 Value/MarshalJSON 方法从指针接收者改成值接收者
  • TimestampType[T] 结构体移除 GormDataType 方法, 并将 Value/MarshalJSON 方法从指针接收者改成值接收者
  • Language 结构体的 SetResources 方法增加对非法资源的判断
  • 新增对 gorm 的 curd 集成测试,目前已覆盖 MySQL/Postgres/SQLite
  • 使用 github.com/stretchr/testify/assert 替换 github.com/stretchr/testify/suite 进行单元测试

v2.6.4 (2025-04-28) ​

  • 修复数据库字段类型为 nil 时抛出异常的bug
  • 将 database_types.go 拆分成 type_carbon.go, type_layout.go, type_format.go, type_timestamp.go
  • 将 LayoutFactory 接口重命名为 LayoutTyper 和 SetLayout 方法重命名为 Layout
  • 将 FormatFactory 接口重命名为 FormatTyper 和 SetFormat 方法重命名为 Format
  • 将 TimestampFactory 接口重命名为 TimestampTyper 和 SetPrecision 方法重命名为 Precision
  • 性能测试文件增加 b.ResetTimer()
  • Language 结构体新增 Copy 方法
  • 新增 carbon.Timestamp 类型别名和 carbon.NewTimestamp 方法
  • 新增 carbon.TimestampMilli 类型别名和 carbon.NewTimestampMilli 方法
  • 新增 carbon.TimestampMicro 类型别名和 carbon.NewTimestampMicro 方法
  • 新增 carbon.TimestampNano 类型别名和 carbon.NewTimestampNano 方法
  • 新增 carbon.DateTime 类型别名和 carbon.NewDateTime 方法
  • 新增 carbon.DateTimeMicro 类型别名和 carbon.NewDateTimeMicro 方法
  • 新增 carbon.DateTimeMilli 类型别名和 carbon.NewDateTimeMilli 方法
  • 新增 carbon.DateTimeNano 类型别名和 carbon.NewDateTimeNano 方法
  • 新增 carbon.Date 类型别名和 carbon.NewDate 方法
  • 新增 carbon.DateMilli 类型别名和 carbon.NewDateMilli 方法
  • 新增 carbon.DateMicro 类型别名和 carbon.NewDateMicro 方法
  • 新增 carbon.DateNano 类型别名和 carbon.NewDateNano 方法
  • 新增 carbon.Time 类型别名和 carbon.NewTime 方法
  • 新增 carbon.TimeMilli 类型别名和 carbon.NewTimeMilli 方法
  • 新增 carbon.TimeMicro 类型别名和 carbon.NewTimeMicro 方法
  • 新增 carbon.TimeNano 类型别名和 carbon.NewTimeNano 方法

v2.6.3 (2025-04-21) ​

  • 修复 IsWeekend, IsWeekday 方法不同国家返回结果一致的 bug
  • 修复 StdTime 方法空指针引起的异常 #294
  • 将错误方法由 私有 方法改成 公开 方法
  • 将一周默认开始日期从 周日 改成 周一
  • 将 MinValue 方法的年份从 -9998 更改为 1
  • 将 weeksPerLongYear 常量更名为 WeeksPerLongYear
  • 新增性能测试文件 xxx_bench_test.go
  • 新增 IsEpoch 方法用于判断是否是 UNIX 纪元时间(1970-01-01 00:00:00 +0000 UTC)
  • 新增 WeekEndsAt 方法用于获取一周的结束日期
  • 新增 SetWeekendDays 方法用于设置一周周末日期
  • 新增 DefaultWeekStartsAt 全局变量用于存储默认一周休息日

v2.6.2 (2025-04-08) ​

  • CreateFromLunar, CreateFromPersian 方法去掉 hour, minute, second 参数
  • 更改部分格式符号定义,涉及到的符号有 U, V, X,S,T Z,u,v,x,z
  • 修复农历中 IsLeapMonth 判断错误的 bug
  • 修复 AtomFormat 和 AtomLayout 格式返回值不一致的 bug
  • 修复 RFC3339Format 和 RFC3339Layout 格式返回值不一致的 bug
  • 设置全局默认时区时不再同步更新 time.Local
  • 新增格式符号o 来获取时区偏移量
  • 新增 TimestampLayout、TimestampMilliLayout、TimestampMicroLayout 和 TimestampNanoLayout 常量
  • 新增 TimestampFormat、TimestampMilliFormat、TimestampMicroFormat 和 TimestampNanoFormat 常量
  • 新增 DateTimeMilli、DateTimeMicro、DateTimeNano 字段类型
  • 新增 DateMilli、DateMicro、DateNano 字段类型
  • 新增 TimeMilli、TimeMicro、TimeNano 字段类型
  • 修复 IsDST 方法丢失时区的 bug
  • 修复 StartOfXXX、EndOfXXX 部分方法丢失时区的 bug
  • 修复其他日历转化为公历时缺失时区的 bug
  • 设置默认时区时不再同步更新 time.Local
  • 新增 MaxDuration、MinDuration 方法

v2.6.1 (2025-03-27) ​

  • 新增 ParseWithLayouts 和 ParseWithFormats 方法
  • 将 formatFactory 接口更名为 FormatFactory, formatFactory 接口更名为 FormatFactory, formatFactory 接口更名为 FormatFactory, 并添加类型约束
  • 将 LayoutType ,FormatType, TimestampType 结构体GormDataType 方法的返回值更改为 time
  • 将 DateTime、Date、Time 类型从 struct 更改为 string
  • 将Timestamp、TimestampMilli、TimestampMicro,TimestampNano 类型从 struct 更改为 int64
  • 将内置数据库字段类型移动到新文件 types.go
  • 修复 gorm 更新数据时 updated_at 字段自动更新无效的 bug

v2.6.0 (2025-03-25) ​

  • golang 最低版本依赖升级到 1.18
  • carbon, julian, lunar, persian 从值传递改成指针传递
  • 新增 ZoneName 方法获取时区名称
  • 新增 HasError 方法判断是否有错误
  • 新增 IsNil 方法判断是否是 nil
  • 新增 Copy 方法对 carbon 进行深度复制
  • 新增 WeekStartsAt 方法获取周起始日期
  • 新增示例文件 xxx_example.go
  • 新增constant.go 文件,将常量从 carbon.go 文件迁移到此文件
  • 默认全局时区从 Local 更改为 UTC
  • Offset 方法更名为 ZoneOffset
  • IsSetTestNow 方法更名为 IsTestNow
  • UnSetTestNow 方法更名为 CleanTestNow
  • 移除 Location 方法,由 Timezone 方法替代
  • 更改 IsValid 和 IsInvalid 方法判断逻辑,zero time 不再视为无效时间
  • 设置全局默认时区时同步更新 time.Local
  • 重构 database.go,移除 carbon.DateTime、carbon. DateTimeMilli 、 carbon.DateTimeMicro、carbon.DateTimeNano、 carbon. Date、carbon.DateMilli、 carbon.DateMicro、 carbon.DateNano、 carbon.Time、 carbon.TimeMilli、 carbon.TimeMicro、 carbon.TimeNano、carbon.Timestamp 、carbon.TimestampMilli 、carbon.TimestampMicro、carbon.TimestampNano 字段类型, 使用泛型字段替代以实现 MarshalJSON/UnmarshalJSON 时自定义输出格式

有关更早版本的更新日志,请参阅 releases