mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 23:44:52 +01:00
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package channelserver
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
Offset = 9
|
|
YearAdjust = -7
|
|
MonthAdjust = 0
|
|
DayAdjust = 0
|
|
)
|
|
|
|
var (
|
|
TimeStatic = time.Time{}
|
|
)
|
|
|
|
func Time_Current() time.Time {
|
|
baseTime := time.Now().In(time.FixedZone(fmt.Sprintf("UTC+%d", Offset), Offset*60*60))
|
|
return baseTime
|
|
}
|
|
|
|
func Time_Current_Adjusted() time.Time {
|
|
baseTime := time.Now().In(time.FixedZone(fmt.Sprintf("UTC+%d", Offset), Offset*60*60)).AddDate(YearAdjust, MonthAdjust, DayAdjust)
|
|
return time.Date(baseTime.Year(), baseTime.Month(), baseTime.Day(), baseTime.Hour(), baseTime.Minute(), baseTime.Second(), baseTime.Nanosecond(), baseTime.Location())
|
|
}
|
|
|
|
func Time_Current_Midnight() time.Time {
|
|
baseTime := time.Now().In(time.FixedZone(fmt.Sprintf("UTC+%d", Offset), Offset*60*60)).AddDate(YearAdjust, MonthAdjust, DayAdjust)
|
|
return time.Date(baseTime.Year(), baseTime.Month(), baseTime.Day(), 0, 0, 0, 0, baseTime.Location())
|
|
}
|
|
|
|
func TimeWeekStart() time.Time {
|
|
midnight := Time_Current_Midnight()
|
|
offset := (int(midnight.Weekday()) - 1) * -24
|
|
return midnight.Add(time.Hour * time.Duration(offset))
|
|
}
|
|
|
|
func TimeWeekNext() time.Time {
|
|
return TimeWeekStart().Add(time.Hour * 24 * 7)
|
|
}
|
|
|
|
func Time_Current_Week_uint8() uint8 {
|
|
baseTime := time.Now().In(time.FixedZone(fmt.Sprintf("UTC+%d", Offset), Offset*60*60)).AddDate(YearAdjust, MonthAdjust, DayAdjust)
|
|
|
|
_, thisWeek := baseTime.ISOWeek()
|
|
_, beginningOfTheMonth := time.Date(baseTime.Year(), baseTime.Month(), 1, 0, 0, 0, 0, baseTime.Location()).ISOWeek()
|
|
|
|
return uint8(1 + thisWeek - beginningOfTheMonth)
|
|
}
|
|
|
|
func Time_static() time.Time {
|
|
if TimeStatic.IsZero() {
|
|
TimeStatic = Time_Current_Adjusted()
|
|
}
|
|
return TimeStatic
|
|
}
|