2015-06-06 43 views
21

我想在C#中将自定义公历日期转换为波斯语日期。 例如,我有此内容的字符串:如何将阳历日期转换为波斯日期?

string GregorianDate = "Thursday, October 24, 2013"; 

现在我想有:

串PersianDate =پنجشنبه2آبان1392;

串PersianDate = 1392年8月2日

感谢

回答

31

使用PersianCalendar:

string GregorianDate = "Thursday, October 24, 2013"; 
DateTime d = DateTime.Parse(GregorianDate); 
PersianCalendar pc = new PersianCalendar(); 
Console.WriteLine(string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d))); 
+0

我如何设置这个完整的属性? – AminM

0
DateTime date = new DateTime(2013, 10, 24); 
    var calendar = new PersianCalendar(); 
    var persianDate = new DateTime(calendar.GetYear(date), calendar.GetMonth(date), calendar.GetDayOfMonth(date)); 
    var result = persianDate.ToString("yyyy MMM ddd", CultureInfo.GetCultureInfo("fa-Ir")); 
+0

在Windows 10中,默认为波斯文化,此代码不起作用 –

1

在windows 10,使用框架4+:

Console.WriteLine(Convert.ToDateTime("1392/08/02",new CultureInfo("fa-IR"))); 

Console.WriteLine(DateTime.Parse("1392/08/02", new CultureInfo("fa-IR"))); 
2

您可以使用PersianDateTime:

PM> Install-Package PersianDateTime 

的参考:PersianDateTime

您可以使用string.Split()如果你需要定制。

1

加起来其他的答案,您可以通过使用PersianDateTime得到第一个:

var gregorianDate = "Thursday, October 24, 2013"; 
var date = DateTime.Parse(gregorianDate); 
var persianDate = new PersianDateTime(date); 
var result = persianDate.ToString("dddd d MMMM yyyy"); 
0

我建议使用MD.PersianDateTime,你可以使用它那么容易,因为日期时间:

var persianDateTimeNow = PersianDateTime.Now; 
persianDateTimeNow.EnglishNumber = true; 
Console.WriteLine(persianDateTimeNow.ToString()); 

https://github.com/Mds92/MD.PersianDateTime