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
|
2018-12-04 02:55:34 +08:00
|
|
|
Hour [24]*HourNode
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewHourNode() *HourNode {
|
|
|
|
|
return &HourNode{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (hour *HourNode) CreateHour(IsOk bool) {
|
|
|
|
|
h := &HourNode{}
|
|
|
|
|
h.IsOK = IsOk
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewDayNode(curday *time.Time) *DayNode {
|
|
|
|
|
day := &DayNode{}
|
|
|
|
|
|
|
|
|
|
week := curday.Weekday()
|
|
|
|
|
day.IsOK = true
|
|
|
|
|
day.Week = week
|
|
|
|
|
|
|
|
|
|
return day
|
2018-12-03 19:22:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type MonthNode struct {
|
|
|
|
|
IsOK bool
|
|
|
|
|
MaxDay int
|
2018-12-04 02:55:34 +08:00
|
|
|
|
|
|
|
|
First *time.Time
|
|
|
|
|
Day [32]*DayNode
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (month *MonthNode) CreateDay(nday int) {
|
|
|
|
|
day := month.First.AddDate(0, 0, nday-1)
|
|
|
|
|
month.Day[nday] = NewDayNode(&day)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewMonthNode(year, month int) *MonthNode {
|
|
|
|
|
Month := &MonthNode{}
|
|
|
|
|
First := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, time.Local)
|
|
|
|
|
Month.IsOK = false
|
|
|
|
|
Month.First = &First
|
|
|
|
|
Month.MaxDay = Month.First.AddDate(0, 1, -1).Day()
|
|
|
|
|
return Month
|
2018-12-03 19:22:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type TrieYear struct {
|
|
|
|
|
Year int
|
2018-12-04 02:55:34 +08:00
|
|
|
Month [13]*MonthNode
|
2018-12-03 19:22:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func CreateTrieYear(year int) *TrieYear {
|
|
|
|
|
|
|
|
|
|
ty := TrieYear{}
|
2018-12-04 02:55:34 +08:00
|
|
|
// ty.Month[0].IsOK = false
|
2018-12-03 19:22:43 +08:00
|
|
|
|
|
|
|
|
for i := 1; i <= 12; i++ {
|
2018-12-04 02:55:34 +08:00
|
|
|
ty.Month[i] = NewMonthNode(year, i)
|
|
|
|
|
month := ty.Month[i]
|
2018-12-03 19:22:43 +08:00
|
|
|
|
2018-12-04 02:55:34 +08:00
|
|
|
for begin := 1; begin <= month.MaxDay; begin++ {
|
2018-12-03 19:22:43 +08:00
|
|
|
|
2018-12-04 02:55:34 +08:00
|
|
|
month.CreateDay(begin)
|
2018-12-03 19:22:43 +08:00
|
|
|
|
|
|
|
|
for j := 0; j < 24; j++ {
|
2018-12-04 02:55:34 +08:00
|
|
|
month.Day[begin].Hour[j] = NewHourNode()
|
2018-12-03 19:22:43 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &ty
|
|
|
|
|
}
|