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

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

【讨论】:

以上是关于如何将公历日期转换为波斯日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中将公历日期更改为波斯日期?

在 impala 中将儒略日期转换为公历日期

在格鲁吉亚(基督教)日期转换为波斯日期,反之亦然

WPS表格怎么将公历转化成农历日期?

如何将公历字符串转换为公历?

将 <input type="date"> 更改为波斯日期