unicode-org / icu4x

Solving i18n for client-side and resource-constrained environments.
https://icu4x.unicode.org
Other
1.39k stars 180 forks source link

Start of epoch for Islamic observational calendar doesn't match CLDR/ICU4C #4982

Open anba opened 6 months ago

anba commented 6 months ago

CLDR and ICU4C both use July 15, 622 CE as the start of the epoch for the Islamic observational calendar:

Whereas ICU4X uses July 16, 622 CE:

Does it make sense to align ICU4X with CLDR/ICU4C?


According to CLDR, only "islamic-civil" should use July 16, 622 CE, but interestingly ICU4C also uses July 16, 622 CE for "islamic-umalqura". When calling ICU4C through Intl.DateTimeFormat:

js> new Intl.DateTimeFormat("en", {calendar:"islamic", timeZone:"UTC"}).format(Date.parse("0622-07-19T00:00:00.000Z")) 
"1/2/1 AH"
js> new Intl.DateTimeFormat("en", {calendar:"islamic-civil", timeZone:"UTC"}).format(Date.parse("0622-07-19T00:00:00.000Z"))
"1/1/1 AH"
js> new Intl.DateTimeFormat("en", {calendar:"islamic-tbla", timeZone:"UTC"}).format(Date.parse("0622-07-19T00:00:00.000Z"))  
"1/2/1 AH"
js> new Intl.DateTimeFormat("en", {calendar:"islamic-umalqura", timeZone:"UTC"}).format(Date.parse("0622-07-19T00:00:00.000Z"))
"1/1/1 AH"

In comparison when implementing Temporal using ICU4X:

js> Temporal.PlainDate.from({calendar:"islamic", year: 1, month: 1, day: 1}).toString()       
"0622-07-19[u-ca=islamic]"
js> Temporal.PlainDate.from({calendar:"islamic-civil", year: 1, month: 1, day: 1}).toString()
"0622-07-19[u-ca=islamic-civil]"
js> Temporal.PlainDate.from({calendar:"islamic-tbla", year: 1, month: 1, day: 1}).toString()  
"0622-07-18[u-ca=islamic-tbla]"
js> Temporal.PlainDate.from({calendar:"islamic-umalqura", year: 1, month: 1, day: 1}).toString()
"0622-07-18[u-ca=islamic-umalqura]"
sffc commented 6 months ago

@roozbehp, do you have thoughts on this?

Reingold says on page 106:

The calendar is computed, by the majority of the Muslim world, starting at sunset of Thursday, July 15, 622 c. e. (Julian), the year of Mohammed’ s migration to Medina from Mecca. 2 The introduction of the calendar is often attributed to the Caliph ‘Umar in 639 c. e., but there is evidence that it was in use before his succession. In essence, Muslims count r. d. 227015 = Friday, July 16, 622 c. e. (Julian) as the beginning of the Islamic year 1, that is, as Muḥarram 1, a. h. 3 1, and thus we define islamic-epoch def () = fixed-from-julian 622 c. e. july 16 (7.1)