solo obtener now hora formato fecha example ejemplos cambiar c# datetime cultureinfo persian

obtener - datetime to date c#



Cómo imprimir DateTime en formato persa en C# (3)

Primero debe tener en cuenta que no puede poner una Fecha Jalali en un objeto DateTime, obtendrá una excepción en fechas como "1392/02/31".

Por lo tanto, debe manejar sus fechas Jalali en una cadena o un tipo de fecha y hora personalizado.

Le sugiero que mantenga su fecha como fecha gregoriana en todo momento, y la convierta cuando necesite mostrarla.

Este es un método de extensión para obtener la fecha persa de un objeto DateTime.

public static string GetPersianDate(this DateTime date) { PersianCalendar jc = new PersianCalendar(); return string.Format("{0:0000}/{1:00}/{2:00}", jc.GetYear(date), jc.GetMonth(date), jc.GetDayOfMonth(date)); } //How to use it: DateTime d = new DateTime(2014, 05, 21); string s = d.GetPersianDate(); //1393/02/31

Y luego, cuando tienes una fecha Jalali en formato de cadena, aquí está el método de extensión para obtener la fecha gregoriana:

public static DateTime GetDateTimeFromJalaliString(this string jalaliDate) { PersianCalendar jc = new PersianCalendar(); try { string[] date = jalaliDate.Split(''/''); int year = Convert.ToInt32(date[0]); int month = Convert.ToInt32(date[1]); int day = Convert.ToInt32(date[2]); DateTime d = jc.ToDateTime(year, month, day, 0, 0, 0, 0, PersianCalendar.PersianEra); return d; } catch { throw new FormatException("The input string must be in 0000/00/00 format."); } } //How to use it: string pdate = "1392/02/31"; DateTime dateFromJalali = pdate.GetDateTimeFromJalaliString(); //{5/21/2014 12:00:00 AM}

Y ahora para manejar funciones extra:

Nombre de la semana:

public static string GetDayOfWeekName(this DateTime date) { switch (date.DayOfWeek) { case DayOfWeek.Saturday: return "شنبه"; case DayOfWeek.Sunday: return "يکشنبه"; case DayOfWeek.Monday: return "دوشنبه"; case DayOfWeek.Tuesday: return "سه‏ شنبه"; case DayOfWeek.Wednesday: return "چهارشنبه"; case DayOfWeek.Thursday: return "پنجشنبه"; case DayOfWeek.Friday: return "جمعه"; default: return ""; } } //How to use it: DateTime date = DateTime.Now; string wname = date.GetDayOfWeekName();

Nombre del mes:

public static string GetMonthName(this DateTime date) { PersianCalendar jc = new PersianCalendar(); string pdate = string.Format("{0:0000}/{1:00}/{2:00}", jc.GetYear(date), jc.GetMonth(date), jc.GetDayOfMonth(date)); string[] dates = pdate.Split(''/''); int month = Convert.ToInt32(dates[1]); switch (month) { case 1: return "فررودين"; case 2: return "ارديبهشت"; case 3: return "خرداد"; case 4: return "تير‏"; case 5: return "مرداد"; case 6: return "شهريور"; case 7: return "مهر"; case 8: return "آبان"; case 9: return "آذر"; case 10: return "دي"; case 11: return "بهمن"; case 12: return "اسفند"; default: return ""; } } //How to use it: DateTime date = DateTime.Now; string mname = date.GetMonthName();

¿Cuál es la forma más sencilla de imprimir c # DateTime en persa? Actualmente estoy usando:

static public string PersianDateString(DateTime d) { CultureInfo faIR = new CultureInfo("fa-IR"); faIR.DateTimeFormat.Calendar = new PersianCalendar(); return d.ToString("yyyy/MM/dd", faIR); }

Lo que arroja una excepción.

No es un calendario válido para la cultura dada.


Prueba de esta manera:

public static string PersianDateString(DateTime d) { CultureInfo faIR = new CultureInfo("fa-IR"); return d.ToString("yyyy/MM/dd", faIR); }

y si cambia el formato a, por ejemplo, "yyyy MMM ddd" , obtendría 2011 جوييه الأحد .


Puedes usar esto:

static public string PersianDateString(DateTime d) { var pc = new PersianCalendar(); return string.Format("{0:0000}/{1:00}/{2:00}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d)); }