go-carbon v2.3.2 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,支持链式调用、农历和 gorm、xorm 等主流 orm。
目前已被 awesome-go-cn 收录,如果您觉得不错,请给个 star 吧
github.com/golang-module/carbon
gitee.com/golang-module/carbon
定义模型
type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday1 Carbon `json:"birthday1"` Birthday2 Carbon `json:"birthday2" carbon:"date" tz:"PRC"` Birthday3 Carbon `json:"birthday3" carbon:"time" tz:"PRC"` Birthday4 Carbon `json:"birthday4" carbon:"dateTime" tz:"PRC"` Birthday5 Carbon `json:"birthday5" carbon:"timestamp" tz:"PRC"` Birthday6 Carbon `json:"birthday6" carbon:"timestampMilli" tz:"PRC"` Birthday7 Carbon `json:"birthday7" carbon:"timestampMicro" tz:"PRC"` Birthday8 Carbon `json:"birthday8" carbon:"timestampNano" tz:"PRC"` }
或
type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday1 Carbon `json:"birthday1"` Birthday2 Carbon `json:"birthday2" carbon:"layout:2006-01-02" tz:"PRC"` Birthday3 Carbon `json:"birthday3" carbon:"layout:15:04:05" tz:"PRC"` Birthday4 Carbon `json:"birthday4" carbon:"layout:2006-01-02 15:04:05" tz:"PRC"` Birthday5 Carbon `json:"birthday5" carbon:"timestamp" tz:"PRC"` Birthday6 Carbon `json:"birthday6" carbon:"timestampMilli" tz:"PRC"` Birthday7 Carbon `json:"birthday7" carbon:"timestampMicro" tz:"PRC"` Birthday8 Carbon `json:"birthday8" carbon:"timestampNano" tz:"PRC"` }
或
type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday1 Carbon `json:"birthday1"` Birthday2 Carbon `json:"birthday2" carbon:"format:Y-m-d" tz:"PRC"` Birthday3 Carbon `json:"birthday3" carbon:"format:H:i:s" tz:"PRC"` Birthday4 Carbon `json:"birthday4" carbon:"format:Y-m-d H:i:s" tz:"PRC"` Birthday5 Carbon `json:"birthday5" carbon:"timestamp" tz:"PRC"` Birthday6 Carbon `json:"birthday6" carbon:"timestampMilli" tz:"PRC"` Birthday7 Carbon `json:"birthday7" carbon:"timestampMicro" tz:"PRC"` Birthday8 Carbon `json:"birthday8" carbon:"timestampNano" tz:"PRC"` }
实例化模型
now := Parse("2020-08-05 13:14:15", PRC) person := Person { Name: "gouguoyin", Age: 18, Birthday1: now, Birthday2: now, Birthday3: now, Birthday4: now, Birthday5: now, Birthday6: now, Birthday7: now, Birthday8: now, }
Json 编码
loadErr := carbon.LoadTag(&person) if loadErr != nil { // 错误处理 log.Fatal(loadErr) } data, marshalErr := json.Marshal(person) if marshalErr != nil { // 错误处理 log.Fatal(marshalErr) } fmt.Printf("%s", data) // 输出 { "name": "gouguoyin", "age": 18, "birthday1": "2020-08-05 13:14:15", "birthday2": "2020-08-05", "birthday3": "13:14:15", "birthday4": "2020-08-05 13:14:15", "birthday5": 1596604455, "birthday6": 1596604455999, "birthday7": 1596604455999999, "birthday8": 1596604455999999999 }
Json 解码
str := `{ "name": "gouguoyin", "age": 18, "birthday1": "2020-08-05 13:14:15", "birthday2": "2020-08-05", "birthday3": "13:14:15", "birthday4": "2020-08-05 13:14:15", "birthday5": 1596604455, "birthday6": 1596604455999, "birthday7": 1596604455999999, "birthday8": 1596604455999999999 }` var person Person loadErr := carbon.LoadTag(&person) if loadErr != nil { // 错误处理 log.Fatal(loadErr) } unmarshalErr := json.Unmarshal([]byte(str), &person) if unmarshalErr != nil { // 错误处理 log.Fatal(unmarshalErr) } fmt.Sprintf("%s", person.Birthday1) // 2002-08-05 13:14:15 fmt.Sprintf("%s", person.Birthday2) // 2020-08-05 fmt.Sprintf("%s", person.Birthday3) // 13:14:15 fmt.Sprintf("%s", person.Birthday4) // 2002-08-05 13:14:15 fmt.Sprintf("%d", person.Birthday5) // 1596604455 fmt.Sprintf("%d", person.Birthday6) // 1596604455999 fmt.Sprintf("%d", person.Birthday7) // 1596604455999999 fmt.Sprintf("%d", person.Birthday8) // 1596604455999999999
更新日志
- 新增
tag
结构体,优化LoadTag
方法 - 结构体中 `carbon` 标签新增时间戳,`MarshalJSON` 方法增加对时间戳的处理
- 将
encoding.go
文件中MarshalJSON
方法新增对U
,V
,X
,Z
的解析 - 优化
database.go
文件中的Scan
方法,将默认时区设置为Local
- 优化
outputer.go
文件中String
方法 CreateFromStdTime
方法新增timezone
可选参数- 新增
India
时区常量 - 提高性能测试覆盖率

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
🎉 领域模型即服务 | Wow 2.12.3 发布
领域驱动|事件驱动|测试驱动|声明式设计|响应式编程|命令查询职责分离|事件溯源 官方文档:https://ahoowang.gitee.io/wow/ 更新内容 特性(lib): 添加WowEndpoint,支持通过spring-boot-actuator暴露Wow 编译时元数据的能力,以便验证 Wow 元数据(WowMetadata) 定义的正确性。 特性(doc): 使用VitePress替换VuePress作为静态文档站点生成器 特性(doc): 添加对站点地图的支持 特性(doc): 更新wow-spring-boot-starter文档,添加对WowEndpoint的说明 -https://ahoowang.gitee.io/wow/guide/extensions/spring-boot-starter.html#actuator WowEndpointActuator 配置 management: endpoints: web: exposure: include: - wow 简介 Wow是一个基于领域驱动设计和事件溯源的现代响应式CQRS微服务开发框架...
- 下一篇
ModStartCMS v7.9.0 内容推荐支持,用户授权升级
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完整的API调用 大文件分片上传,进度条显示,已上传文件管理 强大的模块扩展功能,所有模块可以无缝集成,支持在线安装、卸载模块 完善的开发助手,实现模块、主题的的一键创建 完善的后台权限管理,支持基于RBAC的权限管理系统 后台管理支持使用手机、平板、PC,无论何时何地都可方便管理 第三方登录(QQ、微信、微博、支付宝、微信小程序) 第三方支付支持(微信、支付宝、支付宝当面付、微信扫码、微信小程序) 第三方云存储支持,支持云储存分片上传(阿里云、百度云、华为云、腾讯云、FTP、七牛云、UCloud、又拍云) 第三方短信支持(阿里云、腾讯云、华为云、百度云、253云通讯、聚合、七牛云、融云、赛邮、UCloud、云片、网易云) V7.9.0版本更新 2024年01月03日ModStartCMS发布v7...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G