Skip to content

Conversation

@lxcid
Copy link
Contributor

@lxcid lxcid commented Jan 12, 2026

Implement parsing and stringification of BC dates using ISO 8601 extended year format with negative year numbers. This follows the astronomical year numbering system where year 0 = 1 BC, year -1 = 2 BC, etc.

Changes:

  • Parser: Handle optional leading dash before year component
  • Stringify: Format negative years with proper padding (e.g., -0044)
  • Add comprehensive test coverage for BC dates, including:
    • Full dates, year-month, and year-only formats
    • Year 0 (1 BC in proleptic Gregorian calendar)
    • BC dates with time and timezone components
    • Round-trip parsing and stringification

Examples:

  • parseTemporal('-0044-03-15') → year: -44 (44 BC)
  • parseTemporal('0000-01-01') → year: 0 (1 BC)
  • stringifyDate({ year: -44, month: 3, day: 15 }) → '-0044-03-15'

The implementation maintains backward compatibility and follows ISO 8601:2004 extended year format specification.

Implement parsing and stringification of BC dates using ISO 8601 extended
year format with negative year numbers. This follows the astronomical year
numbering system where year 0 = 1 BC, year -1 = 2 BC, etc.

Changes:
- Parser: Handle optional leading dash before year component
- Stringify: Format negative years with proper padding (e.g., -0044)
- Add comprehensive test coverage for BC dates, including:
  - Full dates, year-month, and year-only formats
  - Year 0 (1 BC in proleptic Gregorian calendar)
  - BC dates with time and timezone components
  - Round-trip parsing and stringification

Examples:
- parseTemporal('-0044-03-15') → year: -44 (44 BC)
- parseTemporal('0000-01-01') → year: 0 (1 BC)
- stringifyDate({ year: -44, month: 3, day: 15 }) → '-0044-03-15'

The implementation maintains backward compatibility and follows ISO 8601:2004
extended year format specification.
@changeset-bot
Copy link

changeset-bot bot commented Jan 12, 2026

🦋 Changeset detected

Latest commit: 50b3e8e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@taskade/temporal-parser Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@lxcid lxcid merged commit c557ac0 into main Jan 12, 2026
3 checks passed
@lxcid lxcid deleted the lxcid/bc-date branch January 12, 2026 13:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants