2017-05-07 54 views
1

我开发一个asp.net网站,我想波斯日期的字符串转换为DateTime类型,我用下面的代码,但我得到公历日期字符串转换为波斯日期时间

System.Globalization.CultureInfo pr = new System.Globalization.CultureInfo("fa-ir"); 
DateTime dt = DateTime.ParseExact("1396/04/31", "yyyy/MM/dd", pr); 

dt为2017年7月22日,但必须1396/04/31

我试试这个代码太多,但有同样的问题

PersianCalendar persianDate = new PersianCalendar(); 
DateTime st = persianDate.ToDateTime(1396, 04, 31, 0, 0, 0, 0); 

我使用Windows 10和.NET 4.5

我该如何解决这个问题。 请帮助我。

+0

['System.DateTime'代表在公历日期(https://开头MSDN。 microsoft.com/en-us/library/system.datetime#Remarks),因此您无法使用它来表示其他日历。 – Slai

回答

1

可以使用PersianCalendar

System.Globalization.CultureInfo pr = new System.Globalization.CultureInfo("fa-ir"); 
     DateTime dt = DateTime.ParseExact("1396/04/31", "yyyy/MM/dd", pr); 
     PersianCalendar pc = new PersianCalendar(); 
     Console.WriteLine("Today in the Persian Calendar: {0}, {1}/{2}/{3} {4}:{5}:{6}\n", 
      pc.GetDayOfWeek(dt), 
      pc.GetYear(dt), 
      pc.GetMonth(dt), 
      pc.GetDayOfMonth(dt), 
      pc.GetHour(dt), 
      pc.GetMinute(dt), 
      pc.GetSecond(dt)); 
+0

我想得到DateTime不是字符串 – saeid6366

0

你可以参考PersianDateTime
How convert Gregorian date to Persian date?

PersianDateTime now = PersianDateTime.Now; 

string persianDateTime = now.ToString(); // 1392/03/09 23:37:57 
string persianDate = now.ToString(PersianDateTimeFormat.Date); // 1392/03/09 
string persianFullDateTime = now.ToString("dddd d MMMM yyyy ساعت hh:mm:ss tt"); // پنج شنبه 9 خرداد 1392 ساعت 11:37:57 ب.ظ 

TimeSpan persianTime = now.TimeOfDay; // 23:37:57.4641984 
相关问题