dateparse_tag/README.md

103 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

2022-01-12 11:11:07 +08:00
# dateparse_tag
dateparse time by struct tag
2022-01-12 14:11:27 +08:00
2022-01-12 14:14:54 +08:00
## intro&简介
2022-01-12 14:11:27 +08:00
WithTagName() // 自定义你想要使用的tag名称默认为dateFormat
WithDefaultTagValue() // 定义这个tag的默认值默认为 default
WithDefaultFormat() // 定义时间格式化样式,默认为 2006-01-02 15:04:05
2022-01-13 16:38:46 +08:00
WithEmptyValue() // 定义一个空值返回,当指定结构体的指定字段为空值时,返回你想要的空值,默认为 `""`
2022-01-12 14:11:27 +08:00
## install&安装
```go
go get github.com/cowardmrx/dateparse_tag
```
2022-01-13 16:38:46 +08:00
### attention&&注意
```go
Parse(in,out interface{}) // 该方法已经弃用,但是仍然可以使用,不建议使用
Format(in interface{}) // 该方法已经替代Parse()方法支持嵌套结构体in 参数请使用指针传递
```
2022-01-12 14:11:27 +08:00
## use&使用
```go
type User struct {
Name string `json:"name"`
BirthDay string `json:"birth_day" format_date:"default"`
}
func TestNewDateParseTag(t *testing.T) {
u := new(User)
u.Name = "张三"
u.BirthDay = time.Now().String()
t.Logf("user : %v", u)
dp := NewDateParseTag(WithTagName("format_date"))
dp.Parse(u, u)
t.Logf("user new %v", u)
}
// old user : &{张三 2022-01-12 14:10:17.1867047 +0800 CST m=+0.003444301}
// new user &{张三 2022-01-12 14:10:17}
2022-01-13 16:38:46 +08:00
type User struct {
Name string `json:"name"`
BirthDay string `json:"birth_day" format_date:"default"`
DateS DateS `json:"date_s"`
}
type DateS struct {
OldData string `json:"old_data" format_date:"default"`
NewDates *NewDates `json:"new_dates"`
}
type NewDates struct {
NewDates string `json:"new_dates" format_date:"default"`
}
func TestNewDateParseTag(t *testing.T) {
u := new(User)
u.Name = "张三"
u.BirthDay = time.Now().String()
t.Logf("user : %v", u)
dp := NewDateParseTag(WithTagName("format_date"))
dp.Parse(u, u)
t.Logf("user new %v", u)
}
// user : &{张三 2022-01-13 16:21:36.2974741 +0800 CST m=+0.003138401 {2022-01-13 16:21:36.3125376 +0800 CST m=+0.018201901 0xc000088550}}
// user new &{张三 2022-01-13 16:21:36 {2022-01-13 16:21:36 0xc000088550}} {2022-01-13 16:21:36 0xc000088550} &{2022-01-13 16:21:36}
func TestDateParseTag_Format2(t *testing.T) {
u := new(User)
u.Name = "张三"
u.BirthDay = time.Now().String()
u.DateS = DateS{
OldData: time.Now().String(),
NewDates: &NewDates{
NewDates: time.Now().String(),
},
}
t.Logf("user : %v", u)
dp := NewDateParseTag(WithTagName("format_date"))
dp.Format(u)
t.Logf("user new %v %v %v", u, u.DateS, u.DateS.NewDates)
}
// user : &{张三 2022-01-13 16:36:50.1955716 +0800 CST m=+0.004237901 {2022-01-13 16:36:50.2103154 +0800 CST m=+0.018981701 0xc000044570}}
// user new &{张三 2022-01-13 16:36:50 {2022-01-13 16:36:50 0xc000044570}} {2022-01-13 16:36:50 0xc000044570} &{2022-01-13 16:36:50}
2022-01-12 14:11:27 +08:00
```