Hijri和Gregorian DateTime构造函数

时间:2011-12-22 09:21:44

标签: c# .net datetime calendar

传递给DateTime类型构造函数的对象日历的正确行为是什么?

我将组件年,月和日作为以下示例:

day = 1
month = 5 
year = 1433 (which is the current Hijri year)

使用以下代码创建日期时间对象时,结果是有效的Greg日期

HijriCalendar hijri = new HijriCalendar();
//Get the First Day in the Month
DateTime firstDayInMonth = new DateTime(1433, month, 1, hijri);

使用以下代码生成有效的Hijri日期:

GregorianCalendar greg = new GregorianCalendar();
//Get the First Day in the Month
DateTime firstDayInMonth = new DateTime(1433, month, 1, greg);

是正确的结果吗?

2 个答案:

答案 0 :(得分:3)

你的第一个例子是正确的。 DateTime不是Hijri格式,它只是你给它的标准化等价物。请参阅以下代码了解如何获取Hirji日期:

HijriCalendar hijri = new HijriCalendar();
DateTime firstDayInMonth = new DateTime(1433, 10, 11, hijri);
Console.WriteLine(hijri.GetEra(firstDayInMonth)); // 1
Console.WriteLine(hijri.GetYear(firstDayInMonth)); // 1433
Console.WriteLine(hijri.GetMonth(firstDayInMonth)); // 10
Console.WriteLine(hijri.GetDayOfMonth(firstDayInMonth)); // 11

你的第二段代码只是设置了格里高利日期“1/1/1433”所以当你检查它时你没有得到一个日期,你只是得到你在15世纪给它的日期。

查看http://msdn.microsoft.com/en-us/library/system.globalization.hijricalendar.aspx并查看其中的方法应该可以让您更好地了解您应该对日历对象执行的操作以及DateTime对象应该执行的操作。

答案 1 :(得分:0)

你实际上并没有问过一个有意义的问题。如果您试图将给定日期从一个日历转换为另一个日历,那么在所有Hijri日历与格里高利不同的月份之后,日期将会发生变化。

查看此site示例 - 它甚至可以下载代码。