You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
867 B
39 lines
867 B
package timeutil
|
|
|
|
import "time"
|
|
|
|
func FirstSecondInPeriod(since time.Time, period string) (_ time.Time) {
|
|
y, m, d := since.Date()
|
|
|
|
switch period {
|
|
case "h":
|
|
h := since.Hour()
|
|
return time.Date(y, m, d, h, 0, 0, 0, time.Local)
|
|
case "d":
|
|
return time.Date(y, m, d, 0, 0, 0, 0, time.Local)
|
|
case "m":
|
|
return time.Date(y, m, 1, 0, 0, 0, 0, time.Local)
|
|
default:
|
|
return since
|
|
}
|
|
}
|
|
|
|
func LastSecondInPeriod(until time.Time, period string) (_ time.Time) {
|
|
y, m, d := until.Date()
|
|
|
|
switch period {
|
|
case "h":
|
|
h := until.Hour()
|
|
return time.Date(y, m, d, h, 59, 59, 0, time.Local)
|
|
case "d":
|
|
return time.Date(y, m, d, 23, 59, 59, 0, time.Local)
|
|
case "m":
|
|
tm := time.Date(y, m, 1, 23, 59, 59, 0, time.Local)
|
|
// Додаю місяць
|
|
tm = tm.AddDate(0, 1, 0)
|
|
// Віднімаю день
|
|
return tm.AddDate(0, 0, -1)
|
|
default:
|
|
return until
|
|
}
|
|
}
|
|
|