El 3 de marzo de 2022 es el final de este Mes Hijri (mes de Rajab para este año 1443 AH); es decir, 30 Rayab 1443 AH.
El mes de Rajab para el año 1443 AH es de 30 días de acuerdo con el calendario islámico (Hijri) de acuerdo con todos los sitios web, aplicaciones, MS Office y calendarios de Windows.
Al usar javascript Intl.DateTimeFormat() para mostrar la fecha islámica (Hijri) para el 3 de marzo de 2022 usando la opción de calendario islamic , dará la Fecha islámica Hijri de ( 1 Shaʻban 1443 AH ). Este resultado es un día después del mes de Rajab (es decir, el primero del mes siguiente) y calculó que el mes de Rajab tiene 29 días en lugar de 30 días.
Sin embargo, si la opción pasada a Intl.DateTimeFormat() es ar-SA (es decir, árabe-Arabia Saudita), dará el resultado correcto. Esto es extraño porque la configuración regional ar-SA usa el calendario islámico (Hijri) de forma predeterminada.
¿Es esto un error/error o es el funcionamiento interno correcto de javascript?
¿Existe un método más sólido para obtener la fecha islámica en Javascript que no sea usar la configuración regional 'ar-SA' (pero no usar bibliotecas externas)?
Vea el ejemplo de código a continuación:
He probado esto en nodo y cromo y da la misma discrepancia resultante.
let date = new Date("2022-03-03"); let options = {year:'numeric', month:'long',day:'numeric'}; let format = new Intl.DateTimeFormat('ar-SA-u-nu-latn', options); console.log("3 March 2022 with 'ar-SA' :"+format.format(date)+ " ==> means: 30 Rajab 1443 AH"); format = new Intl.DateTimeFormat('en-u-ca-islamic-nu-latn', options); console.log("3 March 2022 with Islamic Calendar: "+format.format(date));