回历和公历日期时间构造函数

本文关键字:时间 构造函数 日期 | 更新日期: 2023-09-27 18:18:39

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

我有组件年,月和日如下面的例子:

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

当使用下面的代码创建datetime对象时,结果是一个有效的Greg Date

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

同时使用下面的代码生成一个有效的回历日期:

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

是正确的结果吗?

回历和公历日期时间构造函数

第一个例子是正确的。DateTime将不会是回教格式,它将只是你给它的标准化等价。关于如何获取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",所以当你检查它时,你得到的不是一个hirji日期,你得到的只是你给出的15世纪的日期。

查看http://msdn.microsoft.com/en-us/library/system.globalization.hijricalendar.aspx并查看那里的方法应该会让您更好地了解应该在日历对象上做什么以及应该在DateTime对象上发生什么。

你实际上没有问一个有意义的问题。如果你试图将给定的日期从一种日历转换到另一种日历,那么不止日期会改变,毕竟回历日历与公历日历有不同的月份。

查看这个站点的示例-它甚至有可下载的代码。