Ö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();
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
Bu kodu makinemde test ettim ve Farsça tarih için çalıştım, harika cevap. –