{
  "id": "days-until-the-23rd",
  "version": "d60eb5e14919",
  "status": "published",
  "name": "Days Until the 23rd",
  "question": "Days until the 23rd",
  "summary": "Counts the days from today, or any date you choose, to the next 23rd of a month, with its date and the 23rd after it.",
  "category": "days",
  "subcategory": "countdowns",
  "url": "https://www.acalculator.org/days/days-until-the-23rd",
  "markdown": "https://www.acalculator.org/days/days-until-the-23rd.md",
  "kind": "function",
  "method": "Find the first date on or after the start date that is the 23rd of its month, then count the days from the start date to it.",
  "assumptions": [
    "On the 23rd, the count is 0, and the 23rd after is the 23rd of the next month that has one.",
    "Every month has a 23rd, so the next one is never more than a month away.",
    "The start date itself is not counted: from the day before, the count is 1.",
    "Dates are calendar days with no time of day, so a time zone or a daylight-saving change never adds or loses a day.",
    "Start dates from January 1, 1900 to December 31, 2400 work."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "from": {
        "title": "Count from",
        "description": "The date to count from. Today, unless you change it.",
        "type": "string",
        "format": "date"
      }
    }
  },
  "outputs": {
    "days": {
      "label": "Days until the 23rd",
      "description": "Whole days from the start date to the next 23rd of a month; 0 when the start date is the 23rd.",
      "format": "integer"
    },
    "date": {
      "label": "Next 23rd",
      "description": "The first date on or after the start date that is the 23rd of its month.",
      "format": "date-long"
    },
    "after": {
      "label": "The 23rd after",
      "description": "The next 23rd after that date.",
      "format": "date-long"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "from": "2026-10-19"
    },
    "outputs": {
      "days": 4,
      "date": "2026-10-23",
      "after": "2026-11-23"
    },
    "text": "From October 19, 2026, there are 4 days until the 23rd, Friday, October 23, 2026."
  },
  "examples": [
    {
      "given": {
        "from": "2026-10-19"
      },
      "expect": {
        "date": "2026-10-23",
        "days": 4,
        "after": "2026-11-23"
      },
      "source": "IETF RFC 3339, section 5.7 (days in each month) and Appendix C (the leap year rule) (https://www.rfc-editor.org/rfc/rfc3339); Python 3 datetime, walking one day at a time from the start date (docs/progress/WP-141/truth_days.py)"
    },
    {
      "given": {
        "from": "2026-12-31"
      },
      "expect": {
        "date": "2027-01-23",
        "days": 23,
        "after": "2027-02-23"
      },
      "source": "IETF RFC 3339, section 5.7 (days in each month) and Appendix C (the leap year rule) (https://www.rfc-editor.org/rfc/rfc3339); Python 3 datetime, walking one day at a time from the start date (docs/progress/WP-141/truth_days.py)"
    },
    {
      "given": {
        "from": "2027-02-01"
      },
      "expect": {
        "date": "2027-02-23",
        "days": 22,
        "after": "2027-03-23"
      },
      "source": "IETF RFC 3339, section 5.7 (days in each month) and Appendix C (the leap year rule) (https://www.rfc-editor.org/rfc/rfc3339); Python 3 datetime, walking one day at a time from the start date (docs/progress/WP-141/truth_days.py)"
    },
    {
      "given": {
        "from": "2028-02-15"
      },
      "expect": {
        "date": "2028-02-23",
        "days": 8,
        "after": "2028-03-23"
      },
      "source": "IETF RFC 3339, section 5.7 (days in each month) and Appendix C (the leap year rule) (https://www.rfc-editor.org/rfc/rfc3339); Python 3 datetime, walking one day at a time from the start date (docs/progress/WP-141/truth_days.py)"
    },
    {
      "given": {
        "from": "2027-01-23"
      },
      "expect": {
        "date": "2027-01-23",
        "days": 0,
        "after": "2027-02-23"
      },
      "source": "IETF RFC 3339, section 5.7 (days in each month) and Appendix C (the leap year rule) (https://www.rfc-editor.org/rfc/rfc3339); Python 3 datetime, walking one day at a time from the start date (docs/progress/WP-141/truth_days.py)"
    }
  ],
  "sources": [
    "IETF RFC 3339, Date and Time on the Internet: Timestamps, section 5.7 (the days in each month) and Appendix C (the leap year rule). https://www.rfc-editor.org/rfc/rfc3339",
    "U.S. Naval Observatory, Leap Years: the Gregorian leap year rule. https://aa.usno.navy.mil/faq/leap_years"
  ],
  "related": [
    "days-until-the-22nd",
    "days-until-the-24th",
    "days-until",
    "days-from-today"
  ],
  "changelog": []
}
