ios - 使用 NSIndianCalendar 时显示错误的日期

标签 ios objective-c nscalendar nsdatecomponents

<分区>


想改进这个问题吗? 通过 editing this post 添加细节并澄清问题.

关闭 9 年前

我正在尝试从 week day 和 year 获取日期。它工作并获得正确的输出。但是,当我更改 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 +0000 该日期的一天是星期六。

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

最佳答案

输出是正确的。

印度日历比公历早 78 年。因此,印度历中的 2013 年等于公历中的 2091 年。

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

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

同样,天也有变化。

引用:Wikipedia

关于ios - 使用 NSIndianCalendar 时显示错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462661/

上一篇:ios - Insert multiple NSDictionary to Core Data问题

下一篇:ios - 在 -loadView 中查看框架

相关文章:

swift - NSDateComponents 语法的差异?

ios - Xcode 7 警告 : object file was built for newer iOS version than being linked

ios - iOS 中的 URL 解码

java - iOS 设备上生成的公钥在 Java 服务器上无效

ios - 如何确定 NSDate 是否是工作日?

Swift:无法将类型 'NSDate' 的值转换为预期的参数类型 'NSDateComponents'

ios - 将 json 值分配给标签

ios - 使用机器人签署问题构建

ios - 获取每个 UITableViewCell 在屏幕上的当前 y 值位置

ios - 如何删除 UITableView 中的空节标题