timeutils/timeutils.go

72 lines
1.6 KiB
Go

package timeutils
import "time"
const (
Second int64 = 1
Minute = 60 * Second
Hour = 60 * Minute
Day = 24 * Hour
Week = 7 * Day
)
var (
// Europe/Moscow (UTC+03:00) time zone
MoscowLocation = time.FixedZone("Europe/Moscow", int(Hour)*3)
// Europe/Moscow (UTC+03:00) time zone
DefaultLocation = MoscowLocation
// 2000-12-31
DefaultDateLayout = "2006-01-02"
// 23:59:59
DefaultTimeLayout = "15:04:05"
// 23:59
DefaultTimeShortLayout = "15:04"
// Example: 2000-12-31 13:01:59
DefaultDatetimeLayout = "2006-01-02 15:04:05"
// Example: 2000-12-31__13-01-59
DefaultFilenameLayout = "2006-01-02__15-04-05"
)
func Now() time.Time {
return time.Now().In(DefaultLocation)
}
func StartOfDay(now time.Time) time.Time {
return time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
}
func StartOfPreviousDay(now time.Time) time.Time {
return StartOfDay(now).AddDate(0, 0, -1)
}
func StartOfNextDay(now time.Time) time.Time {
return StartOfDay(now).AddDate(0, 0, 1)
}
func StartOfWeek(now time.Time) time.Time {
offset := -convertWeekday(now.Weekday())
return StartOfDay(now).AddDate(0, 0, offset)
}
func StartOfPreviousWeek(now time.Time) time.Time {
offset := -7 - convertWeekday(now.Weekday())
return StartOfDay(now).AddDate(0, 0, offset)
}
func StartOfNextWeek(now time.Time) time.Time {
offset := 7 - convertWeekday(now.Weekday())
return StartOfDay(now).AddDate(0, 0, offset)
}
// Monday - 0
// Tuesday - 1
// Wednesday - 2
// Thursday - 3
// Friday - 4
// Saturday - 5
// Sunday - 6
func convertWeekday(weekday time.Weekday) int {
return (int(weekday) + 6) % 7
}