dateFromComponents 返回错误值
Posted
技术标签:
【中文标题】dateFromComponents 返回错误值【英文标题】:dateFromComponents returning wrong value 【发布时间】:2015-05-25 18:09:35 【问题描述】:我正在尝试设置 [NSDate date] 的月份和年份,但函数 dateFromComponents 返回错误的值,这是我的代码:
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian]; // Setup an NSCalendar
NSDateComponents *components = [gregorianCalendar components: NSUIntegerMax fromDate: [NSDate date]]; // Setup NSDateComponents
[components setTimeZone:[NSTimeZone defaultTimeZone]];
[components setMonth:monthInt];
[components setYear:yearInt];
// Setup the new date
NSDate *dateToCompare = [gregorianCalendar dateFromComponents: components];
yearInt 是 2014 年,monthInt 是 12,但它报告的是 12-2015 而不是 2014 年,这是为什么呢?
谢谢!
【问题讨论】:
【参考方案1】:你只需要输入你需要的位操作符,试试这个:
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian]; // Setup an NSCalendar
NSDateComponents *components = [gregorianCalendar components: NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear |NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour | NSCalendarUnitTimeZone fromDate: [NSDate date]]; // Setup NSDateComponents
[components setTimeZone:[NSTimeZone defaultTimeZone]];
[components setMonth:12];
[components setYear:2014];
// Setup the new date
NSDate *dateToCompare = [gregorianCalendar dateFromComponents: components];
NSLog(@"Ver %@",dateToCompare);
NSUIntegerMax = 18446744073709551615 以位表示:100000000000000000000000000000000000000000000000000000000000000000 很多人都关掉了。
【讨论】:
以上是关于dateFromComponents 返回错误值的主要内容,如果未能解决你的问题,请参考以下文章