下面由golang教程栏目给大家介绍go-carbon 1.2.0 版本,希望对需要的朋友有所帮助!

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/carbonimport ( "github.com/golang-module/carbon")// 使用gitee库go get -u gitee.com/go-package/carbonimport ( "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 // 18user.Name // 勾国印user.Birthday.ToDateString() // 2012-08-05user.CreatedAt.ToTimestamp() // 2012-08-05 13:14:15user.DeletedAt.ToDateTimeString() // 1596604455user.GraduatedAt.AddDay().ToDateString() // 2012-09-10user.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()方法判断是否是当前时间

更多相关文章

  1. 快看!go-carbon 1.2.2 版本发布了!新增了时间设置和时间差比较功能
  2. go语言中普通函数与方法的区别是什么?
  3. golang中方法的receiver为指针和不为指针有什么区别
  4. 分享5种文件变更时自动重载Go程序的方法
  5. go-carbon1.2.4发布了!新增系列时间比较方法
  6. go语言实现string转float的方法
  7. 详解Go 中方法与函数的区别
  8. go语言string转int的方法
  9. go语言int转string的方法

随机推荐

  1. 使用PHP简单实现类似“畅言”等评论系统
  2. php怎么放大字体
  3. PHP高效生成一个不重复随机数
  4. php无限极分类原理
  5. php怎么分页
  6. 关于php mysqli函数的一些总结和详细介绍
  7. PHP 实现 Snowflake 生成分布式唯一 ID
  8. 关于php mysqli函数的一些总结及实例(三)
  9. 关于php mysqli函数的一些总结和实例(四)
  10. PHP基于limit子句的分页详细操作