2011-07-24 13 views
18

Farsça # DateTime c yazdırmak için en basit yolu nedir? şu anda kullanıyorum:nasıl C# Pers formatta DateTime yazdırmak için

Geçerli bir takvim verilen kültür için bir istisna atar

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

cevap

7

böyle deneyin:

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

ve formatı örneğin "yyyy MMM ddd" olarak değiştirdiyseniz 2011 جوييه الأحد olsun.

+1

en önemli şeyler o Pers hafta içi ve ay adlarını yazdırmak ve sadece Arapça adlarını yazdırmak olamaz olmasıdır. اردیبهشت - - isimlerdir خرداد vb ve Pers hafta içi شنبه - Farsça ay isimleri فروردین olan یکشنبه vb Bu tamamen yararı olduğunu. – QMaster

+0

Bu kodu makinemde test ettim ve Farsça tarih için çalıştım, harika cevap. –

2

Bunu kullanabilirsiniz:

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)); 
} 
+0

Bu sadece tarihi Pers olarak değiştirir. Yararlı noktalar almalısın. Farsça tarih olarak biçimlendirme hakkında soru. bunun gibi: چهارشنبه. 92نجم آذر ماه 1392 ve cevabınız yararlıdır. – QMaster

23

Önce bir DateTime nesnesine bir Celali Tarihi koyamazsınız gerektiğine dikkat etmeliyiz, siz "1392/02/31" gibi tarihlere bir istisna alacak.

Yani Celali bir dize veya özel bir DateTime tipinde büyük işlemesi gerekir.

Hepinizin anda Gregoryen tarihi olarak tarihinizi tutmanızı öneririz ve bunu göstermek için gerektiğinde dönüştürmek.

Bu

DateTime nesneden Pers tarihi elde etmek için bir uzatma yöntemidir.

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 

Ve dize biçiminde bir Celali tarih olduğunda o zaman burada Gregoryen tarihi almak için uzatma yöntemidir:

Hafta adını: Ekstra fonksiyonları için şimdi

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} 

Ve:

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

Ay adı:

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(); 
İlgili konular