grokify/mogo

View on GitHub
time/timeutil/xox_times.go

Summary

Maintainability
A
0 mins
Test Coverage
package timeutil

import (
    "time"
)

type XOXTimes struct {
    CurrentTime   time.Time
    CurrentStart  time.Time
    PreviousTime  time.Time
    PreviousStart time.Time
}

func QOQTimes(thisTime time.Time) XOXTimes {
    xox := XOXTimes{CurrentTime: thisTime.UTC()}
    xox.CurrentStart = quarterStart(xox.CurrentTime)
    xox.PreviousStart = QuarterAdd(xox.CurrentStart, -1)

    dur := xox.CurrentTime.Sub(xox.CurrentStart)
    xox.PreviousTime = xox.PreviousStart.Add(dur)
    return xox
}

func YOYTimes(t time.Time) XOXTimes {
    t = t.UTC()
    tm := NewTimeMore(t, 0)
    xox := XOXTimes{
        CurrentTime:  t,
        CurrentStart: tm.YearStart()}
    xox.PreviousStart = TimeDT4AddNYears(xox.CurrentStart, -1)

    dur := xox.CurrentTime.Sub(xox.CurrentStart)
    xox.PreviousTime = xox.PreviousStart.Add(dur)
    return xox
}