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  }