diff --git a/src/slack-bot/app.py b/src/slack-bot/app.py index a446891..6a30d7b 100644 --- a/src/slack-bot/app.py +++ b/src/slack-bot/app.py @@ -62,6 +62,7 @@ _DATED_FORMATS = ( "%Y-%m-%d", "%m/%d/%Y", "%m/%d/%y", + "%m-%d-%Y", "%m-%d-%y", "%b %d %Y", "%B %d %Y", diff --git a/tests/slack_bot/test_parse_date.py b/tests/slack_bot/test_parse_date.py index 0b2d36c..3b9c778 100644 --- a/tests/slack_bot/test_parse_date.py +++ b/tests/slack_bot/test_parse_date.py @@ -69,6 +69,19 @@ def test_two_digit_year_dash(slackbot_app): assert slackbot_app.parse_date("7-3-26").strftime("%Y-%m-%d") == "2026-07-03" +@freeze_time(FROZEN) +def test_four_digit_year_dash(slackbot_app): + assert slackbot_app.parse_date("7-3-2026").strftime("%Y-%m-%d") == "2026-07-03" + + +@freeze_time(FROZEN) +def test_two_digit_year_century_boundary(slackbot_app): + # Python's %y maps 00–68 → 2000s and 69–99 → 1900s. Pin it so nobody + # "fixes" the ambiguity by accident later. + assert slackbot_app.parse_date("12/31/99").year == 1999 + assert slackbot_app.parse_date("1/1/68").year == 2068 + + @freeze_time(FROZEN) def test_two_digit_year_past_not_rolled(slackbot_app): # Explicit two-digit year in the past stays put — no roll-forward.