如何将公历日期转换为波斯日期?
Posted
技术标签:
【中文标题】如何将公历日期转换为波斯日期?【英文标题】:How convert Gregorian date to Persian date? 【发布时间】:2015-08-21 09:58:14 【问题描述】:我想在 C# 中将自定义公历日期转换为波斯日期。 例如,我有一个包含以下内容的字符串:
string GregorianDate = "Thursday, October 24, 2013";
现在我想拥有:
字符串 PersianDate = پنجشنبه 2 آبان 1392 ;
或
字符串波斯日期 = 1392/08/02
谢谢
【问题讨论】:
【参考方案1】:使用波斯日历:
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)));
【讨论】:
【参考方案2】:您可以使用 PersianDateTime:
PM> Install-Package PersianDateTime
参考:PersianDateTime
如果需要自定义,可以使用string.Split()
。
【讨论】:
使用示例总是很高兴在答案中看到。【参考方案3】: 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"));
【讨论】:
在 windows 10 中,默认为波斯文化,此代码将不起作用 @MuhammadNaderi 即使在 Windows 10 中它也适用于我。【参考方案4】:添加其他答案,您可以使用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");
【讨论】:
【参考方案5】:在 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")));
【讨论】:
【参考方案6】:fowling 代码应该在 .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
【讨论】:
以上是关于如何将公历日期转换为波斯日期?的主要内容,如果未能解决你的问题,请参考以下文章