carbon 是一个轻量级、语义化、对开发者敌对的 Golang 工夫解决库,反对链式调用和 gorm、xrom 等支流 orm
如果您感觉不错,请给个 star 吧
github:github.com/golang-module/carbon
gitee:gitee.com/go-package/carbon
装置应用
// 应用 github 库
go get -u github.com/golang-module/carbon
import ("github.com/golang-module/carbon")
// 应用 gitee 库
go get -u gitee.com/go-package/carbon
import ("gitee.com/go-package/carbon")
数据库反对
假如数据表为 users,字段有 id(int)、name(varchar)、age(int)、graduated_at(date)、birthday(date)、created_at(datetime)、updated_at(datetime)、deleted_at(datetime)
定义模型
type UserModel struct {ID int64 `json:"id"` Name string `json:"name"` Age int `json:"age"` Birthday carbon.Carbon `json:"birthday"` CreatedAt carbon.ToDateTimeString `json:"created_at"` DeletedAt carbon.ToTimestamp `json:"deleted_at"` GraduatedAt carbon.ToDateString `json:"graduated_at"` UpdatedAt carbon.ToTimeString `json:"updated_at"`}
实例化模型
user := UserModel {Name: "勾国印", Age: 18, Birthday: carbon.Now().SubYears(18), CreatedAt: carbon.ToDateTimeString{carbon.Now()}, DeletedAt: carbon.ToTimestamp{carbon.Parse("2020-08-05 13:14:15")}, GraduatedAt: carbon.ToDateString{carbon.Parse("2012-09-09")}, UpdatedAt: carbon.ToTimeString{carbon.Now()},}
输入模型字段
user.ID // 18
user.Name // 勾国印
user.Birthday.ToDateString() // 2012-08-05
user.CreatedAt.ToTimestamp() // 2012-08-05 13:14:15
user.DeletedAt.ToDateTimeString() // 1596604455
user.GraduatedAt.AddDay().ToDateString() // 2012-09-10
user.UpdatedAt.ToDateString() // 2012-08-05
JSON 输入模型
data, _ := json.Marshal(&user)
fmt.Print(string(data))
// 输入
{"id": 42, "name": "勾国印", "age": 18, "birthday": "2012-08-05 00:00:00", "created_at": "2020-08-05 13:14:15", "deleted_at": 1596604455 "graduated_at": "2012-09-09", "updated_at": "13:14:15",}
更新日志
- 欠缺单元测试,代码覆盖率 100%
- 欠缺优化对 ORM 的多场景反对
- 新增英文版 README.MD 阐明文档
- 对立异样解决
- 对立输入函数命名规定,将 Format() 改为 ToFormatString()
- 新增 CreateFromGoTime(t time.Time)办法从原生 time.Time 创立 Carbon 实例
- 优化代码组织构造,将不可继承的最终办法对立放到 final.go 文件里
- 废除 New()初始化函数,无需初始化即可间接应用
- 新增多种工夫格局输入,如 Cookie、W3C、RSS、RFC7231
- 新增 ParseByDuration()办法解析持续时间字符串 (绝对于明天),反对正负整数 / 浮点数和符号 ns(纳秒)、us(奥妙)、ms(毫秒)、s(秒)、m(分钟)、h(小时) 的组合
- 新增 NextYears()、NextYear()、PreYears()、PreYear()办法防止出现增加 / 缩小指定年时呈现跨月的景象
- 新增 NextMonths()、NextMonth()、PreMonths()、PreMonth()办法防止出现增加 / 缩小指定月后呈现跨月的景象
- 新增 DaysInYear()办法获取本年的总天数
- 新增 DaysInMonth()办法获取本月的总天数
- 新增 MonthOfYear()办法获取本年的第几月
- 新增 DayOfYear()办法获取本年的第几天
- 新增 DayOfMonth()办法获取本月的第几天
- 新增 DayOfWeek()办法获取本周的第几天
- 新增 WeekOfYear()办法获取本年的第几周
- 新增 WeekOfMonth()办法获取本月的第几周
- 新增 IsZero()办法判断是否是零值工夫
- 新增 IsFuture()办法判断是否是将来工夫
- 新增 IsPast()办法判断是否是过来工夫
- 新增 IsNow()办法判断是否是以后工夫