使用NSIndianCalendar时显示错误的日期

时间:2013-07-04 05:43:30

标签: ios objective-c nscalendar nsdatecomponents

我想从工作日和年份获取日期。它工作并获得正确的输出。但是,当我更改CalendarIdentifier时,它将显示错误的输出。

这是我的代码

当我设置CalendarIdentifier时是NSGregorianCalendar

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:2013];
[components setWeek:2];
[components setWeekday:1];

NSDate *resultDate = [gregorian dateFromComponents:components];
output is :-  2013-01-05 18:30:00 +0000

当我更改CalendarIdentifier时是NSIndianCalendar

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSIndianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:2013];
[components setWeek:2];
[components setWeekday:1];

NSDate *resultDate = [gregorian dateFromComponents:components];
Output is :- 2091-03-24 18:30:00 +0000

我做错了什么?...提前致谢..

修改

根据Midhun MP的回答,我的输出是正确的。 现在我的问题是如果我使用NSGregorianCalendar
输出为: - 2013-01-05 18:30:00 + 000000那天是星期六。

根据NSGregorianCalendar星期六是星期一开始,星期五是星期一结束。 我想找到类似的开始和结束,即星期一和印度的星期日或它是不同的??? 。

1 个答案:

答案 0 :(得分:2)

输出正确。

印度历是格列高利历的78年。因此2013年印度历法在格里高利历中等于2091年。

印度历的第一个月也是公历的三月(三月)

2013 (Indian Calendar)       + 78  = 2091 (Gregorian Calendar)
3 (March in Indian Calendar) + 2   = 5 (May in Gregorian Calendar)

同样,白天也有变化。

参考:Wikipedia