更新日志
v2.6.14 (2025-10-28)
- 优化
traveler.go文件里时间增减系列方法通过复制实例来保证不可变性,以避免修改原始实例 - 增加对
希腊语的本地化语言支持 - 增加对
芬兰语的本地化语言支持 - 增加对
缅甸语的本地化语言支持
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更改成空carbonCarbon结构体新增IsEmpty方法用于判断是否为空carbonCarbon结构体新增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,TZ,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.18carbon,julian,lunar,persian从值传递改成指针传递- 新增
ZoneName方法获取时区名称 - 新增
HasError方法判断是否有错误 - 新增
IsNil方法判断是否是nil - 新增
Copy方法对carbon进行深度复制 - 新增
WeekStartsAt方法获取周起始日期 - 新增示例文件
xxx_example.go - 新增
constant.go文件,将常量从carbon.go文件迁移到此文件 - 默认全局时区从
Local更改为UTC Offset方法更名为ZoneOffsetIsSetTestNow方法更名为IsTestNowUnSetTestNow方法更名为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