Return Datetime.Day 在波斯文化中由 c#

Return Datetime.Day in persian culture by c#

我打算 return 在 波斯文化 中的 月中的某一天 。我已经设置了文化并且效果很好。显示的日期是波斯日历。但是我需要在某处检查一个月中的确切日期,

例如今天是 2018-2-3,波斯历是 1396-11-14,

var date = DateTime.Now 

向我展示了正确的波斯历日期时间。但是

var date = DateTime.Now.Day 

显示 3 而不是 14。 我需要 14!我知道我可以将它更改为字符串并得到一天,但它使我的代码变得很脏,我对这种方式不太感兴趣,因为我在程序的许多部分都使用了它。 有什么办法吗?

我想澄清一些事情。

一个 DateTime 实例在公历上 总是 无论如何。令人惊讶的是,it has a few constructorsCalendar 作为参数,但我认为此参数不会影响 任何 关于在内部将其保持为公历等价物。

如果您想在 特定 日历中获取 DateTime 的某些部分,您需要将该 DateTime 实例作为 GetXXX 方法的参数调用 that 日历实例。

例如;

var today = DateTime.Today;
var persian = new PersianCalendar();
Console.WriteLine(persian.GetDayOfMonth(today)); // 14

这里是demonstration.

您将尝试此代码。

 CultureInfo info = new CultureInfo("fa-Ir");
 info.DateTimeFormat.Calendar = new PersianCalendar();          
 string day= "";
 Thread.CurrentThread.CurrentCulture = info;
 day= DateTime.Now.ToString("dd");

参考这个link:https://archive.codeplex.com/?p=persianculture