Cómo mostrar fechas árabes en el calendario gregoriano?
-
21-08-2019 - |
Pregunta
Tengo un sitio ASP.NET multilingüe; uno de los idiomas es Árabe (AR-SA). Para cambiar entre las culturas, utilizo este código:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Name)
Thread.CurrentThread.CurrentUICulture = New CultureInfo(Name)
Cuando se muestra la fecha de un artículo, por ejemplo, acabo de hacer esto, y la API de localización se encarga de todo:
<%#Eval("DatelineDate","{0:d MMMM yyyy}")%>
El problema es que esta muestra fechas utilizando el calendario Hijiri (islámica) (por ejemplo, el año 2008 se representa como 1429). El cliente quiere mostrar las fechas utilizando el calendario gregoriano (siendo la prestación de los nombres de los meses y todo lo demás en árabe, por supuesto). ¿Cómo puedo hacer esto?
Solución
Respuesta:
Resulta que la cultura ar-SA es el único que utilizar el calendario Hijiri; todas las otras culturas árabes utilizan gregoriano. Estos son los diferentes formatos de fecha en árabe (un poco en mal estado debido a las ADM no admite parecen apoyar el texto RTL).
ar-AE 11 ديسمبر 2008
ar-BH 11 ديسمبر 2008
ar-DZ 11 ديسمبر 2008
ar-EG 11 ديسمبر 2008
ar-IQ 11 كانون الأول 2008
ar-JO 11 كانون الأول 2008
ar-KW 11 ديسمبر 2008
ar-LB 11 كانون الأول 2008
ar-LY 11 ديسمبر 2008
ar-MA 11 دجنبر 2008
ar-OM 11 ديسمبر 2008
ar-QA 11 ديسمبر 2008
ar-SA 13 ذو الحجة 1429
ar-SY 11 كانون الأول 2008
ar-TN 11 ديسمبر 2008
ar-YE 11 ديسمبر 2008
Y por lo que vale aquí está el código rápido y sucio he utilizado para generar esta lista:
Response.Write("<table width=300px>")
For Each ci As CultureInfo In (From c As CultureInfo In CultureInfo.GetCultures(CultureTypes.AllCultures) Order By c.Name Where c.Name.StartsWith("ar-"))
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(ci.Name)
Thread.CurrentThread.CurrentUICulture = New CultureInfo(ci.Name)
Response.Write(String.Format("<tr><td>{0}</td> <td style='direction:rtl;font-size:20px;'>{1:d MMMM yyyy}</td></tr>", ci.Name, Today))
Next
Response.Write("</table>")
Response.End()
Más culturas en http: // www.massimilianobianchi.info/max/articles/22/UI-culture-list-and-codes.aspx
Otros consejos
Puede sólo tiene que utilizar otra configuración regional árabe, la única diferencia entre ellos es el formato de fecha ...