Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

326
Views
Discrepancia en las salidas de Javascript Intl.DateTimeFormat() para el calendario islámico (Hijri) entre 'islamic' y 'ar-SA'

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));

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!