{
  "id": "days-until-the-1st",
  "version": "ad94caed6997",
  "status": "published",
  "name": "Days Until the 1st",
  "question": "Days until the 1st",
  "summary": "Counts the days from today, or any date you choose, to the next 1st of a month, with its date and the 1st after it.",
  "category": "days",
  "subcategory": "countdowns",
  "url": "https://www.acalculator.org/days/days-until-the-1st",
  "markdown": "https://www.acalculator.org/days/days-until-the-1st.md",
  "kind": "function",
  "method": "Find the first date on or after the start date that is the 1st of its month, then count the days from the start date to it.",
  "assumptions": [
    "On the 1st, the count is 0, and the 1st after is the 1st of the next month that has one.",
    "Every month has a 1st, 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 1st",
      "description": "Whole days from the start date to the next 1st of a month; 0 when the start date is the 1st.",
      "format": "integer"
    },
    "date": {
      "label": "Next 1st",
      "description": "The first date on or after the start date that is the 1st of its month.",
      "format": "date-long"
    },
    "after": {
      "label": "The 1st after",
      "description": "The next 1st after that date.",
      "format": "date-long"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "from": "2026-10-19"
    },
    "outputs": {
      "days": 13,
      "date": "2026-11-01",
      "after": "2026-12-01"
    },
    "text": "From October 19, 2026, there are 13 days until the 1st, Sunday, November 1, 2026."
  },
  "examples": [
    {
      "given": {
        "from": "2026-10-19"
      },
      "expect": {
        "date": "2026-11-01",
        "days": 13,
        "after": "2026-12-01"
      },
      "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-01",
        "days": 1,
        "after": "2027-02-01"
      },
      "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-01",
        "days": 0,
        "after": "2027-03-01"
      },
      "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-03-01",
        "days": 15,
        "after": "2028-04-01"
      },
      "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-31st",
    "days-until-the-20th",
    "days-until",
    "days-from-today"
  ],
  "changelog": []
}
