Documentation
¶
Overview ¶
Package timekit is a collection of time related helpers
Deprecated: not deprecated, but experimental, API is subject to changes.
Index ¶
- Constants
- func DayDiff(ref, target time.Time) int
- func EnableTimeEnum() func()
- func MonthDiff(ref, target time.Month) int
- func Months() []time.Month
- func ShiftMonth(m time.Month, n int) time.Month
- func ShiftWeekday(wd time.Weekday, d int) time.Weekday
- func ToDate(ref time.Time) (year int, month time.Month, day int, tz *time.Location)
- func WeekdayDiff(ref, target time.Weekday) int
- func Weekdays() []time.Weekday
- type DayTime
- type Duration
- func (d Duration) Add(o Duration) Duration
- func (d Duration) AddDuration(duration time.Duration) Duration
- func (d Duration) AddTo(t time.Time) time.Time
- func (Duration) Between(from, till time.Time) Duration
- func (Duration) ByDuration(duration time.Duration) Duration
- func (d Duration) Compare(o Duration) int
- func (d Duration) IsZero() bool
- func (d Duration) Iter() iter.Seq[time.Duration]
- func (Duration) Parse(raw string) (Duration, error)
- func (d Duration) String() string
- type Interval
- type Monthly
- type Range
- type Schedule
Examples ¶
Constants ¶
const ErrParseDuration errorkit.Error = "ErrParseDuration"
Variables ¶
This section is empty.
Functions ¶
func DayDiff ¶
DayDiff returns the difference in days between two times, truncating each to midnight before comparison.
func EnableTimeEnum ¶
func EnableTimeEnum() func()
func MonthDiff ¶
MonthDiff calculates the number of months between ref and target. It assumes a cyclic nature, meaning that if target is before ref in the year, it wraps around after December.
Example ¶
package main import ( "time" "go.llib.dev/frameless/pkg/timekit" ) func main() { _ = timekit.MonthDiff(time.January, time.January) // 0 _ = timekit.MonthDiff(time.January, time.February) // 1 _ = timekit.MonthDiff(time.January, time.March) // 2 _ = timekit.MonthDiff(time.January, time.April) // 3 _ = timekit.MonthDiff(time.January, time.May) // 4 _ = timekit.MonthDiff(time.January, time.June) // 5 _ = timekit.MonthDiff(time.January, time.July) // 6 _ = timekit.MonthDiff(time.January, time.August) // 7 _ = timekit.MonthDiff(time.January, time.September) // 8 _ = timekit.MonthDiff(time.January, time.October) // 9 _ = timekit.MonthDiff(time.January, time.November) // 10 _ = timekit.MonthDiff(time.January, time.December) // 11 _ = timekit.MonthDiff(time.December, time.January) // 1 _ = timekit.MonthDiff(time.October, time.January) // 3 }
func WeekdayDiff ¶
WeekdayDiff calculates the number of days between ref and target. It assumes a cyclic nature, meaning that if target is before ref in the week, it wraps around after Sunday.
Example ¶
package main import ( "time" "go.llib.dev/frameless/pkg/timekit" ) func main() { _ = timekit.WeekdayDiff(time.Monday, time.Monday) // 0 _ = timekit.WeekdayDiff(time.Monday, time.Tuesday) // 1 _ = timekit.WeekdayDiff(time.Monday, time.Wednesday) // 2 _ = timekit.WeekdayDiff(time.Monday, time.Thursday) // 3 _ = timekit.WeekdayDiff(time.Monday, time.Friday) // 4 _ = timekit.WeekdayDiff(time.Monday, time.Saturday) // 5 _ = timekit.WeekdayDiff(time.Monday, time.Sunday) // 6 }
Types ¶
type Duration ¶
type Duration struct {
// contains filtered or unexported fields
}
Duration allows to describe distances between two time point, that normally would not be possible with time.Duration.
Example ¶
package main import ( "time" "go.llib.dev/frameless/pkg/timekit" ) func main() { var d timekit.Duration d = d.Between(time.Now(), time.Now().AddDate(1000, 0, 0)) // 1000 years worth of duration relative to time now. _ = d.String() }
type Schedule ¶
type Schedule struct { // DayTime is the time during a day, where the scheduling begins. DayTime DayTime // Duration is length of the scheduling. Duration time.Duration // Month defines for which month the AvailabilityPolicy is meant for. Months []time.Month // Day defines for which day the AvailabilityPolicy is meant for. Days []int // Weekday defines if the policy is meant for a given day, or for any day of the week. // if nil, then it is interpreted as unbound. Weekdays []time.Weekday // Location of the AvailabilityPolicy. // When no Location set, then Product specific configuration is expected. Location *time.Location }
Schedule allows to define an abstract time, that continously reoccurs in time based on the specifications set in its field.