Documentation
¶
Overview ¶
Package timeutils provides time-related utility functions.
Index ¶
Constants ¶
const HumanReadableSubMinute = "< 1m"
HumanReadableSubMinute is the human-readable label for durations shorter than one minute.
Variables ¶
var ( // ErrInvalidISO8601Format is returned when the ISO 8601 duration format is invalid. ErrInvalidISO8601Format = errors.New("invalid ISO 8601 duration format") // ErrInvalidDurationNumber is returned when a duration number is invalid. ErrInvalidDurationNumber = errors.New("invalid number in duration") // ErrUnknownDurationUnit is returned when a duration unit is unknown. ErrUnknownDurationUnit = errors.New("unknown duration unit") // ErrInvalidScanType is returned when scanning into Duration fails due to type mismatch. ErrInvalidScanType = errors.New("invalid type for Duration scan") // ErrInvalidDurationFormat is returned when the duration format cannot be parsed. ErrInvalidDurationFormat = errors.New("invalid duration format") // ErrInvalidPostgresInterval is returned when parsing PostgreSQL interval fails. ErrInvalidPostgresInterval = errors.New("invalid PostgreSQL interval") )
Errors returned by ISO 8601 duration parsing and formatting.
Functions ¶
func FormatHumanReadable ¶
FormatHumanReadable formats a duration in a human-readable short form. Examples: "1m", "5s", "1h", "2d", "< 1m".
func FormatISO8601Duration ¶
FormatISO8601Duration converts a time.Duration to an ISO 8601 duration string like "PT1M", "PT30S", "PT1H30M". This is needed for cross-database compatibility (PostgreSQL and SQLite). Only supports hours, minutes, and seconds.
func FormatPeriod ¶
FormatPeriod formats a period string (e.g., "00:01:00" or "1m") to a human-readable short form. It attempts to parse the input as a Go duration first, then as PostgreSQL interval format. Returns the original string if parsing fails.