2011-07-24 35 views
18

Cách đơn giản nhất để in C# DateTime bằng tiếng Ba Tư là gì? hiện tôi đang sử dụng:Cách in DateTime theo định dạng Ba Tư trong C#

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

nào ném một ngoại lệ

Không phải là một lịch có giá trị trong văn hóa cho

Trả lời

7

Hãy thử như thế này:

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

và nếu bạn đã thay đổi định dạng thành ví dụ "yyyy MMM ddd" bạn ould có được 2011 جوييه الأحد.

+1

Điều quan trọng nhất là không thể in tên các ngày trong tuần và tháng Ba Tư và chỉ in tên tiếng Ả Rập. Tên tháng Ba Tư là فروردین - اردیبهشت - خرداد vv và tên các ngày trong tuần Ba Tư là شنبه - یکشنبه vv Đây là tính hữu dụng hoàn toàn. – QMaster

+0

Tôi đã kiểm tra mã này trên máy của mình và làm việc cho ngày Ba Tư, câu trả lời tuyệt vời. –

2

Bạn có thể sử dụng này:

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

Đó chỉ là ngày chuyển đổi thành tiếng Ba Tư. Bạn phải có được điểm hữu ích. Câu hỏi về định dạng là ngày Ba Tư. như thế này: چهارشنبه. پنجم آذر ماه 1392 và câu trả lời của bạn là hữu ích. – QMaster

23

Trước tiên, bạn phải lưu ý rằng bạn không thể đặt một ngày Jalali trong một đối tượng DateTime, bạn sẽ nhận được một ngoại lệ trong ngày như "1392/02/31".

Vì vậy, bạn phải xử lý ngày Jalali của bạn trong một chuỗi hoặc một loại DateTime tùy chỉnh.

Tôi khuyên bạn nên giữ ngày của bạn như một ngày Gregorian mọi lúc, và chuyển đổi nó khi bạn cần hiển thị nó.

Đây là một phương pháp mở rộng để có được Ngày Ba Tư từ một đối tượng 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 

Và sau đó khi bạn có một cuộc hẹn Jalali ở định dạng chuỗi ở đây là phương pháp mở rộng để có được ngày Gregorian:

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} 

Và bây giờ để xử lý chức năng bổ sung: Tên

Tuần:

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

Tên tháng:

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(); 
Các vấn đề liên quan