package datetime import ( "github.com/rickb777/period" "github.com/samber/lo" ) type ISODurationString period.ISOString func (i ISODurationString) Parse() (ISODuration, error) { res, err := period.Parse(string(i)) if err != nil { return ISODuration{}, NewDurationParseError(string(i), err) } return ISODuration{res}, nil } // ParsePtrOrNil parses the ISO8601 string representation of the period or if ISODurationString is nil, returns nil func (i *ISODurationString) ParsePtrOrNil() (*ISODuration, error) { if i == nil { return nil, nil } d, err := i.Parse() if err != nil { return nil, err } return lo.ToPtr(d), nil } func (i ISODurationString) String() string { return string(i) }