mojombo / chronic

Chronic is a pure Ruby natural language date parser.
http://injekt.github.com/chronic
MIT License
3.23k stars 452 forks source link

Chronic parsing "today at noon" as tomorrow midnight - daylight saving related #389

Open erikraudsepp opened 5 years ago

erikraudsepp commented 5 years ago

On the day when we switched to daylight savings time, Chronic is parsing "today at noon" wrong.

(byebug) Time.current.middle_of_day
Sun, 10 Mar 2019 12:00:00 PDT -07:00
(byebug) Time.current
Sun, 10 Mar 2019 12:26:53 PDT -07:00
(byebug) Chronic.parse("today at noon")
Mon, 11 Mar 2019 00:00:00 PDT -07:00
(byebug) Chronic.parse("today")
Sun, 10 Mar 2019 18:30:00 PDT -07:00
(byebug) Chronic.parse("tomorrow")
Mon, 11 Mar 2019 13:00:00 PDT -07:00
(byebug) Chronic.parse("noon")
Mon, 11 Mar 2019 00:00:00 PDT -07:00
(byebug) Chronic.parse("6 in the morning")
Sun, 10 Mar 2019 06:00:00 PDT -07:00
(byebug) Chronic.parse("this morning")
Sun, 10 Mar 2019 10:00:00 PDT -07:00
(byebug) Chronic.parse("tomorrow at 6:45pm")
Mon, 11 Mar 2019 18:45:00 PDT -07:00
(byebug) Chronic.parse("afternoon yesterday")
Sat, 09 Mar 2019 15:00:00 PST -08:00
(byebug) Chronic.parse("afternoon today")
Sun, 10 Mar 2019 16:00:00 PDT -07:00
(byebug) Chronic.parse("afternoon tomorrow")
Mon, 11 Mar 2019 15:00:00 PDT -07:00
(byebug) Chronic.parse("at noon today")
*** RuntimeError Exception: 'at noon today' is not a recognized time expression

nil
(byebug) Chronic.parse("today at noon")
Mon, 11 Mar 2019 00:00:00 PDT -07:00
(byebug) Chronic.parse("today midnight")
Mon, 11 Mar 2019 00:00:00 PDT -07:00
(byebug) Chronic.parse("tomorrow midnight")
Tue, 12 Mar 2019 00:00:00 PDT -07:00

chronic (0.10.2) ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18]