carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm
如果您觉得不错,请给个star吧
github:[github.com/golang-module/carbon](https://github.com/golang-module/carbon "github.com/golang-module/carbon")
gitee:[gitee.com/go-package/carbon](https://gitee.com/go-package/carbon "gitee.com/go-package/carbon")
##### 错误处理
> 如果有多个错误发生,只返回第一个错误信息,前一个错误排除后才返回下一个错误信息
###### 场景一
```go
c := carbon.SetTimezone(PRC).Parse("123456")
if c.Error != nil {
// 错误处理... fmt.Println(c.Error)}
fmt.Println(c.ToDateTimeString())
// 输出
the value "123456" and layout "2006-01-02 15:04:05" don't match
```
###### 场景二
```go
c := carbon.SetTimezone("XXXX").Parse("2020-08-05")
if c.Error != nil {
// 错误处理... fmt.Println(c.Error)}
fmt.Println(c.ToDateTimeString())
// 输出
invalid timezone "XXXX", please see the $GOROOT/lib/time/zoneinfo.zip file for all valid timezone
```
###### 场景三
```go
c := carbon.SetTimezone("XXXX").Parse("12345678")
if c.Error != nil {
// 错误处理... fmt.Println(c.Error)}
fmt.Println(c.ToDateTimeString())
// 输出
invalid timezone "XXXX", please see the $GOROOT/lib/time/zoneinfo.zip file for all valid timezone
```
> 建议使用SetTimezone()、Parse()、ParseByFormat()、ParseByDuration()、AddDuration()、SubDuration()等方法时先进行错误处理判断,除非你能确保传入参数无误
#### 更新日志
* 更新readme.md文档
* 完善单元测试代码覆盖率
* carbon结构体的Loc私有属性改成Loc公开属性
* carbon结构体新增Error公开属性
* 优化错误处理机制,弃用出错直接panic的粗暴处理方式
* 新增AddCenturies()方法获取N世纪后时间
* 新增AddCentury()方法获取一世纪后时间
* 新增SubCenturies()方法获取N世纪前时间
* 新增SubCentury()方法获取一世纪前时间
* 新增NextCenturies()方法获取N世纪后时间(不跨月)
* 新增NextCentury()方法获取一世纪后时间(不跨月)
* 新增PreCenturies()方法获取N世纪前时间(不跨月)
* 新增PreCentury()方法获取一世纪前时间(不跨月)
有疑问加站长微信联系(非本文作者))