0

我打算返回波斯文化中的日期。我已经设置了文化并且效果很好。显示的日期是波斯历。但我需要检查某个地方的确切日期,

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

var date = DateTime.Now 

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

var date = DateTime.Now.Day 

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

4

2 回答 2

3

我想澄清几件事。

无论如何,一个DateTime实例总是在公历上。令人惊讶的是,它有一些作为参数的构造函数Calendar但我认为这个参数不会对在内部保持它作为公历等价物产生任何影响。

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

例如;

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

这里一个demonstration.

于 2018-02-03T11:45:24.040 回答
0

你会试试这个代码,。

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

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

于 2018-02-03T12:03:43.473 回答