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/v2import "github.com/golang-module/carbon/v2"// 使用 gitee 庫
go get -u gitee.com/golang-module/carbon/v2import "gitee.com/golang-module/carbon/v2"
Golang 版本小于 1.16
// 使用 github 庫
go get -u github.com/golang-module/carbonimport "github.com/golang-module/carbon"// 使用 gitee 庫
go get -u gitee.com/golang-module/carbonimport "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 Personerr1 := 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
輸出不同格式字符串