github.com/stampzilla/stampzilla-go@v2.0.0-rc9+incompatible/pkg/types/duration.go (about) 1 package types 2 3 import ( 4 "fmt" 5 "strings" 6 "time" 7 ) 8 9 type Duration time.Duration 10 11 func (d Duration) String() string { 12 return time.Duration(d).String() 13 } 14 15 func (d Duration) MarshalJSON() (b []byte, err error) { 16 return []byte(fmt.Sprintf(`"%s"`, time.Duration(d).String())), nil 17 } 18 func (d *Duration) UnmarshalJSON(b []byte) error { 19 td, err := time.ParseDuration(strings.Trim(string(b), `"`)) 20 if err != nil { 21 return err 22 } 23 *d = Duration(td) 24 return nil 25 }