wp
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
package timeutil
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"gordenko.dev/dima/qb"
|
||||
"gordenko.dev/dima/qb/proto"
|
||||
)
|
||||
|
||||
func FirstSecondInPeriod(since time.Time, period string) (_ time.Time) {
|
||||
y, m, d := since.Date()
|
||||
@@ -37,3 +42,24 @@ func LastSecondInPeriod(until time.Time, period string) (_ time.Time) {
|
||||
return until
|
||||
}
|
||||
}
|
||||
|
||||
func TimeBoundsOfAggregation(since, until proto.TimeBound, groupBy qb.GroupBy, firstHourOfDay int) (s time.Time, u time.Time) {
|
||||
switch groupBy {
|
||||
case qb.GroupByHour, qb.GroupByDay:
|
||||
s = time.Date(since.Year, since.Month, since.Day, 0, 0, 0, 0, time.Local)
|
||||
u = time.Date(until.Year, until.Month, until.Day, 0, 0, 0, 0, time.Local)
|
||||
|
||||
case qb.GroupByMonth:
|
||||
s = time.Date(since.Year, since.Month, 1, 0, 0, 0, 0, time.Local)
|
||||
u = time.Date(until.Year, until.Month, 1, 0, 0, 0, 0, time.Local)
|
||||
}
|
||||
|
||||
if firstHourOfDay > 0 {
|
||||
duration := time.Duration(firstHourOfDay) * time.Hour
|
||||
s = s.Add(duration)
|
||||
u = u.Add(duration)
|
||||
}
|
||||
|
||||
u = u.Add(-1 * time.Second)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user