curl2info/trie_test.go

74 lines
1.1 KiB
Go
Raw Normal View History

2018-12-03 19:22:43 +08:00
package curl2info
import "time"
type SecondNode int
type MinuteNode struct {
IsOK bool
// Second [60]SecondNode
}
type HourNode struct {
IsOK bool
Minute [60]MinuteNode
}
type DayNode struct {
IsOK bool
Week time.Weekday
Hour [24]HourNode
}
type MonthNode struct {
IsOK bool
MaxDay int
Day []DayNode
}
type TrieYear struct {
Year int
Month [13]MonthNode
}
func CreateTrieYear(year int) *TrieYear {
ty := TrieYear{}
ty.Month[0].IsOK = false
for i := 1; i <= 12; i++ {
cur := time.Date(year, time.Month(i), 1, 0, 0, 0, 0, time.Local)
month := &ty.Month[i]
month.IsOK = false
last := cur.AddDate(0, 1, -1).Day()
month.MaxDay = last
for begin := 0; begin < last; begin++ {
month.Day = append(month.Day, DayNode{})
week := cur.AddDate(0, 0, begin).Weekday()
day := &month.Day[begin]
day.IsOK = false
day.Week = week
for j := 0; j < 24; j++ {
hour := &day.Hour[j]
hour.IsOK = false
for k := 0; k < 60; k++ {
min := &hour.Minute[k]
min.IsOK = false
// 还差一个秒
}
}
}
}
return &ty
}