【问题标题】:dateFromComponents returning wrong valuedateFromComponents 返回错误值
【发布时间】: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 年,这是为什么呢?

谢谢!

【问题讨论】:

    标签: ios objective-c nsdate nsdatecomponents


    【解决方案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 很多人都关掉了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2011-05-18
      • 1970-01-01
      • 2019-02-03
      • 2015-06-19
      • 2014-01-16
      • 2019-10-13
      相关资源
      最近更新 更多