Documentation
¶
Overview ¶
Package durafmt formats time.Duration into a human readable format.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultUnitsCoder = UnitsCoder{":", ","}
DefaultUnitsCoder default units coder using `":"` as PluralSep and `","` as UnitsSep
Functions ¶
This section is empty.
Types ¶
type Durafmt ¶
type Durafmt struct {
// contains filtered or unexported fields
}
Durafmt holds the parsed duration and the original input duration.
func Parse ¶
Parse creates a new *Durafmt struct, returns error if input is invalid.
Example ¶
timeduration := (354 * time.Hour) + (22 * time.Minute) + (3 * time.Second) duration := Parse(timeduration).String() fmt.Println(duration) // 2 weeks 18 hours 22 minutes 3 seconds
Output:
func ParseShort ¶
ParseShort creates a new *Durafmt struct, short form, returns error if input is invalid. It's shortcut for `Parse(dur).LimitFirstN(1)`
Example ¶
Version of durafmt.Parse() that only returns the first part of the duration string.
timeduration := (354 * time.Hour) + (22 * time.Minute) + (3 * time.Second) duration := ParseShort(timeduration).String() fmt.Println(duration) // 2 weeks
Output:
func ParseString ¶
ParseString creates a new *Durafmt struct from a string. returns an error if input is invalid.
Example ¶
duration, err := ParseString("354h22m3.24s") if err != nil { fmt.Println(err) } fmt.Println(duration) // 2 weeks 18 hours 22 minutes 3 seconds // duration.String() // String representation. "2 weeks 18 hours 22 minutes 3 seconds"
Output:
Example (Sequence) ¶
for hours := 1.0; hours < 12.0; hours++ { hour := fmt.Sprintf("%fh", math.Pow(2, hours)) duration, err := ParseString(hour) if err != nil { fmt.Println(err) } fmt.Println(duration) // 2 hours, 4 hours, ... }
Output:
func ParseStringShort ¶
ParseStringShort creates a new *Durafmt struct from a string, short form returns an error if input is invalid. It's shortcut for `ParseString(durStr)` and then calling `LimitFirstN(1)`
Example ¶
Version of durafmt.ParseString() that only returns the first part of the duration string.
duration, err := ParseStringShort("354h22m3.24s") if err != nil { fmt.Println(err) } fmt.Println(duration) // 2 weeks 18 hours 22 minutes 3 seconds // duration.String() // String representation. "2 weeks 18 hours 22 minutes 3 seconds"
Output:
func (*Durafmt) Format ¶
Format parses d *Durafmt into a human readable duration with units.
Example ¶
timeduration := (354 * time.Hour) + (22 * time.Minute) + (1 * time.Second) + (100 * time.Microsecond) duration := Parse(timeduration) // units in portuguese units, err := DefaultUnitsCoder.Decode("ano,semana,dia,hora,minuto,segundo,milissegundo,microssegundo") if err != nil { panic(err) } fmt.Println(duration.Format(units)) // 2 semanas 18 horas 22 minutos 1 segundo 100 microssegundos // custom plural (singular:plural) units, err = DefaultUnitsCoder.Decode("ano,semana:SEMANAS,dia,hora,minuto,segundo,milissegundo,microssegundo") if err != nil { panic(err) } fmt.Println(duration.Format(units)) // 2 SEMANAS 18 horas 22 minutos 1 segundo 100 microssegundos
Output:
func (*Durafmt) InternationalString ¶
func (*Durafmt) LimitFirstN ¶
LimitFirstN sets the output format, outputing only first N elements. n == 0 means no limit.
Example ¶
duration, err := ParseString("354h22m3.24s") if err != nil { fmt.Println(err) } duration = duration.LimitFirstN(2) fmt.Println(duration) // 2 weeks 18 hours // duration.String() // String representation. "2 weeks 18 hours"
Output:
func (*Durafmt) LimitToUnit ¶
LimitToUnit sets the output format, you will not have unit bigger than the UNIT specified. UNIT = "" means no restriction.
Example ¶
duration, err := ParseString("354h22m3.24s") if err != nil { fmt.Println(err) } duration = duration.LimitToUnit("days") fmt.Println(duration) // 14 days 18 hours 22 minutes 3 seconds // duration.String() // String representation. "14 days 18 hours 22 minutes 3 seconds"
Output:
type Units ¶
type Units struct {
Year, Week, Day, Hour, Minute,
Second, Millisecond, Microsecond Unit
}
Units duration units
type UnitsCoder ¶
type UnitsCoder struct { // PluralSep char to sep singular and plural pair. // Example with char `":"`: `"year:year"` (english) or `"mês:meses"` (portuguese) PluralSep, UnitsSep string }
UnitsCoder the units encoder and decoder
func (UnitsCoder) Decode ¶
func (coder UnitsCoder) Decode(s string) (units Units, err error)
Decode decodes input string to Units. The input must follow the following formats: - Unit format (singular and plural pair)
- must singular (the plural receives 's' character as suffix)
- singular and plural: separated by `PluralSep` char Example with char `":"`: `"year:year"` (english) or `"mês:meses"` (portuguese)
- Units format (pairs of Year, Week, Day, Hour, Minute, Second, Millisecond and Microsecond units) separated by `UnitsSep` char
- Examples with `UnitsCoder{PluralSep: ":", UnitsSep = ","}`
- must singular units: `"year,week,day,hour,minute,second,millisecond,microsecond"`
- mixed units: `"year,week:weeks,day,hour,minute:minutes,second,millisecond,microsecond"`
- singular and plural pair units: `"year:wers,week:weeks,day:days,hour:hours,minute:minutes,second:seconds,millisecond:millliseconds,microsecond:microsseconds"`
func (UnitsCoder) Encode ¶
func (coder UnitsCoder) Encode(units Units) string
Encode encodes input Units to string Examples with `UnitsCoder{PluralSep: ":", UnitsSep = ","}`
- singular and plural pair units: `"year:wers,week:weeks,day:days,hour:hours,minute:minutes,second:seconds,millisecond:millliseconds,microsecond:microsseconds"`