如何将公历日期转换为波斯日期?

65

我想在C#中将一个自定义的公历日期转换为波斯日期。 例如,我有一个包含以下内容的字符串:

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

现在我想要:

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

或者

string PersianDate = 1392/08/02

谢谢


为了帮助波斯人,我在这里添加了一些库。1. .Net和.Net Core的PersianDateTime 2. Bootstrap PersianDateTimePicker - Ali reza Soleimani Asl
7个回答

96

使用波斯历:

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

答案是7年前的。所以我在这里放了一个链接(https://github.com/Mds92),更新了一些库。有.NET和.NET Core的PersianDateTime和PersianDateTimePicker。献给所有亲爱的波斯人。 - Ali reza Soleimani Asl

8
    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"));

1
在 Windows 10 中,如果波斯文化是默认设置,则此代码将无法正常工作。 - Muhammad Naderi
@MuhammadNaderi 即使在 Windows 10 中,它对我也有效。 - Mohammad Barbast

6
你可以使用PersianDateTime:
PM> Install-Package PersianDateTime

参考文献:PersianDateTime 如果需要自定义,您可以使用 string.Split()

2
在答案中提供使用示例总是很好的。 - Mehdi Dehghani
链接现在已经失效。 - PurTahan

6
以下代码应该在 .net 4+ 中可用:
DateTime date=Convert.ToDateTime("2020-07-12T19:30:00.000Z");
string persianDateString = date.ToString("yyyy/MM/dd",new CultureInfo("fa-IR"));

persianDateString 的值将是:

1399/04/23

3

除了其他答案之外,您可以使用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
您可以使用以下方法将 DateTime 转换为伊朗时间:
DateTime timeInIran = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTimeToConvert, "Iran Standard Time" );

0
在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")));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接