diff --git a/rules/en/hour.go b/rules/en/hour.go index 8958f39..506eb4d 100644 --- a/rules/en/hour.go +++ b/rules/en/hour.go @@ -45,6 +45,9 @@ func Hour(s rules.Strategy) rules.Rule { zero := 0 switch m.Captures[1][0] { case 65, 97: // am + if hour == 12 { + hour = 0 + } c.Hour = &hour case 80, 112: // pm if hour < 12 { diff --git a/rules/en/hour_minute.go b/rules/en/hour_minute.go index 868efa3..863377c 100644 --- a/rules/en/hour_minute.go +++ b/rules/en/hour_minute.go @@ -62,6 +62,9 @@ func HourMinute(s rules.Strategy) rules.Rule { } switch m.Captures[2][0] { case 65, 97: // am + if hour == 12 { + hour = 0 + } c.Hour = &hour case 80, 112: // pm if hour < 12 { diff --git a/rules/en/hour_minute_test.go b/rules/en/hour_minute_test.go index ba3a7fd..0785055 100644 --- a/rules/en/hour_minute_test.go +++ b/rules/en/hour_minute_test.go @@ -20,6 +20,9 @@ func TestHourMinute(t *testing.T) { {"at 5-59 pm", 3, "5-59 pm", (17 * time.Hour) + (59 * time.Minute)}, {"at 17-59 pam", 3, "17-59", (17 * time.Hour) + (59 * time.Minute)}, {"up to 11:10 pm", 6, "11:10 pm", (23 * time.Hour) + (10 * time.Minute)}, + {"12:30am", 0, "12:30am", 30 * time.Minute}, + {"at 12:00 am", 3, "12:00 am", 0}, + {"12:30pm", 0, "12:30pm", (12 * time.Hour) + (30 * time.Minute)}, } fixtnil := []Fixture{ diff --git a/rules/en/hour_test.go b/rules/en/hour_test.go index d913c41..9dc9795 100644 --- a/rules/en/hour_test.go +++ b/rules/en/hour_test.go @@ -21,6 +21,8 @@ func TestHour(t *testing.T) { {"at 5A.", 3, "5A.", 5 * time.Hour}, {"5A.", 0, "5A.", 5 * time.Hour}, {"11 P.M.", 0, "11 P.M.", 23 * time.Hour}, + {"at 12 am", 3, "12 am", 0}, + {"12A.M.", 0, "12A.M.", 0}, } w := when.New(nil)