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 }