首页 > 其他分享 >go-carbon v2.3.0 圣诞特别版发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

go-carbon v2.3.0 圣诞特别版发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

时间:2023-12-27 13:57:54浏览次数:35  
标签:特别版 v2.3 module golang json go carbon com 轻量级

go-carbon v2.3.0 圣诞节特别版发布,这应该是 2023 年的最后一个版本,祝大家圣诞节快乐!

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。

目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧

github.com/golang-module/carbon

gitee.com/golang-module/carbon

安装使用

Golang 版本大于等于 1.16
// 使用 github 库
go get -u github.com/golang-module/carbon/v2

import "github.com/golang-module/carbon/v2"

// 使用 gitee 库
go get -u gitee.com/golang-module/carbon/v2

import "gitee.com/golang-module/carbon/v2"
Golang 版本小于 1.16
// 使用 github 库
go get -u github.com/golang-module/carbon

import "github.com/golang-module/carbon"

// 使用 gitee 库
go get -u gitee.com/golang-module/carbon

import  "gitee.com/golang-module/carbon"
JSON
定义模型
type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
    Birthday carbon.Carbon `json:"birthday" carbon:"layout:2006-01-02"`
    GraduatedAt carbon.Carbon `json:"graduated_at" carbon:"layout:15:04:05"`
    CreatedAt carbon.Carbon `json:"created_at" carbon:"layout:2006-01-02 15:04:05"`
}

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
    Birthday carbon.Carbon `json:"birthday" carbon:"format:Y-m-d"`
    GraduatedAt carbon.Carbon `json:"graduated_at" carbon:"format:H:i:s"`
    CreatedAt carbon.Carbon `json:"created_at" carbon:"format:Y-m-d H:i:s"`
}
实例化模型
now := Parse("2020-08-05 13:14:15", PRC)
person := Person {
    Name:        "gouguoyin",
    Age:         18,
    Birthday:    now,
    GraduatedAt: now,
    CreatedAt:   now,
}
JSON 编码
err1 := carbon.LoadTag(&person)
if err1 != nil {
    // 错误处理
    log.Fatal(err1)
}
data, err2 := json.Marshal(person)
if err2 != nil {
    // 错误处理
    log.Fatal(err2)
}
fmt.Printf("%s", data)
// 输出
{
    "name": "gouguoyin",
    "age": 18,
    "birthday": "2020-08-05",
    "graduated_at": "13:14:15",
    "created_at": "2020-08-05 13:14:15"
}
JSON 解码
str := `{
    "name": "gouguoyin",
    "age": 18,
    "birthday": "2020-08-05",
    "graduated_at": "13:14:15",
    "created_at": "2020-08-05 13:14:15"
}`
var person Person

err1 := carbon.LoadTag(&person)
if err1 != nil {
    // 错误处理
    log.Fatal(err1)
}

err2 := json.Unmarshal([]byte(str), &person)
if err2 != nil {
    // 错误处理
    log.Fatal(err2)
}

fmt.Sprintf("%s", person.Birthday) // 2002-08-05
fmt.Sprintf("%s", person.GraduatedAt) // 13:14:15
fmt.Sprintf("%s", person.CreatedAt) // 2002-08-05 13:14:15
更新日志
  • 正式移除弃用的 FromStdTime, Time2Carbon, Carbon2Time 方法
  • ToANSICString 方法更名为 ToAnsicString
  • CreateFromDateTime 方法中的毫秒设置为 0
  • CreateFromDate 方法中的时分秒设置为 0
  • 修复 DiffInMonths 方法错误
  • GormDataType 方法从 json.go 文件移动到 database.go 文件
  • 新增 LoadTag 方法,利用反射通过设置 tag 进行 json 自定义编码和解码
  • String 方法根据设置的不同 tag 输出不同格式字符串

标签:特别版,v2.3,module,golang,json,go,carbon,com,轻量级
From: https://www.cnblogs.com/gouguoyin/p/17930392.html

相关文章

  • 超轻量级MP4封装方法介绍
    liwen012023.12.17前言MP4是目前非常常用的一种视频封装格式,关于MP4的介绍资料也非常多。我们常用的封装库或工具有:ffmpeg,libmp4v2,GPAC,MP4.js,它们的优点是功能基本上都是比较全面,缺点就是它们占用的资源相对来说也是非常多的。在嵌入式系统中,不管是RAM还是FLASH空间,一般都是非......
  • 轻量级用户模式线程
    Loom项目通过引入称为纤程的轻量级用户模式线程,在Java中引入了一种新颖的并发方法。与传统线程不同,纤维非常轻,并且可以大量生成,而不会产生相同的开销。这项创新旨在简化Java中的并发性,使开发人员更容易编写可扩展且高效的并发代码。纤维模型简单来说,纤程可以看作是在常规Ja......
  • Android平台RTMP推送|轻量级RTSP服务能力封装代码实现
    好多开发者问我们,有没有针对Android平台RTMP直播推送、轻量级RTSP服务模块的进一步封装,可以更便捷的调用大牛直播SDK接口。为此,我们分享下我们针对Android平台SmartPublisher做的二次封装代码:packagecom.daniulive.smartpublisher;importandroid.util.Log;importjava.nio.By......
  • Hessian——轻量级远程调用方案
    Hessian——轻量级远程调用方案转载自:https://www.cnblogs.com/lyhero11/p/5277583.htmlHessian是caucho公司开发的一种基于二进制RPC协议(RemoteProcedureCallprotocol)的轻量级远程调用框架。具有多种语言的实现,但用的最多的当然是Java实现:)CreatingaHessianservi......
  • Android平台RTSP流如何添加动态水印后转推RTMP或轻量级RTSP服务
    技术背景我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP流,并本地录制一份带动态水印叠加后的数据。整个过程,因为摄像头位置一直在变化,所以需要整体尽可能的低......
  • 新手友好、轻量级的C#/.NET万能工具库
    前言今天分享一个基于MITLicense协议开源、免费、新手友好、轻量级的C#/.NET万能工具库、帮助类库(支持.NET和.NETCore,可以帮助开发者们减少常见重复功能方法查找,提高开发工作效率):Masuit.Tools。项目官方介绍全龄段友好的C#万能工具库,码数吐司库,包含一些常用的操作类,大都是......
  • (亲测)云原生之使用Docker部署Teedy轻量级文档管理系统
    一、Teedy介绍1.1Teedy简介Teedy是一个开源的、功能丰富、易于使用和自定义的文档管理工具,它能够帮助用户管理和组织文档,适用于个人、小组和组织使用。1.2Teedy特点创建和编辑文档:用户可以使用Markdown格式创建和编辑文档,还可以添加标签和注释。文件上传和管理:用户可以上传和管理......
  • .NET 轻量级工作流引擎
    title:.NET轻量级工作流引擎updated:2023-09-1507:58:10Zcreated:2023-09-1507:58:10Zsource:https://mp.weixin.qq.com/s/Q3B8tUwqosNLcX6_5_Ka3Qtags:-dotnetframework.NET轻量级工作流引擎欢迎来到Dotnet工具箱!在这里,你可以发现各种令人惊喜的开源项。......
  • go-carbon v2.2.14 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......
  • Codebeamer—软件全生命周期管理轻量级平台
    产品概述    Codebeamer涵盖了软件研发的生命周期,在一个整合的平台内支持需求管理、测试管理、软件开发过程管理以及项目管理等,同时具有IToperations&DevOps相关的内容,并支持变体管理的功能。对于使用集成的应用程序生命周期管理(ALM)来简化、加快交付的产品开发团队和组织......