@@ -49,20 +49,42 @@ func (period *Period) String() string {
|
||||
}
|
||||
|
||||
func (period *Period) Set(s string) error {
|
||||
ss := strings.Split(s, "..")
|
||||
if err := period.setStartStop(ss[0]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(ss) != 2 {
|
||||
} else if err := period.setStop(ss[1]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (period *Period) setStartStop(s string) error {
|
||||
stop, err := period.setT(s, &period.Start)
|
||||
period.Stop = stop
|
||||
return err
|
||||
}
|
||||
|
||||
func (period *Period) setStop(s string) error {
|
||||
_, err := period.setT(s, &period.Stop)
|
||||
return err
|
||||
}
|
||||
|
||||
func (*Period) setT(s string, t *time.Time) (time.Time, error) {
|
||||
if result, err := time.Parse("2006", s); err == nil {
|
||||
period.Start = result
|
||||
period.Stop = result.AddDate(1, 0, 0).Add(-1 * time.Minute)
|
||||
return nil
|
||||
*t = result
|
||||
return result.AddDate(1, 0, 0).Add(-1 * time.Minute), nil
|
||||
}
|
||||
if result, err := time.Parse("2006-01", s); err == nil {
|
||||
period.Start = result
|
||||
period.Stop = result.AddDate(0, 1, 0).Add(-1 * time.Minute)
|
||||
return nil
|
||||
*t = result
|
||||
return result.AddDate(0, 1, 0).Add(-1 * time.Minute), nil
|
||||
}
|
||||
if result, err := time.Parse("2006-01-02", s); err == nil {
|
||||
period.Start = result
|
||||
period.Stop = result.AddDate(0, 0, 1).Add(-1 * time.Minute)
|
||||
return nil
|
||||
*t = result
|
||||
return result.AddDate(0, 0, 1).Add(-1 * time.Minute), nil
|
||||
}
|
||||
return fmt.Errorf("unimplemented format: %s", s)
|
||||
return time.Time{}, fmt.Errorf("unimplemented format: %s", s)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user