NSDate未显示预期结果

时间:2014-01-20 06:21:22

标签: ios nsdate

我正在使用NSDates,但未找到对以下行为的解释。可能是另一个SO用户的观点可以帮助我找到跟随行为的原因。

这是我的代码的一部分:

        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSInteger comps = (NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit);

        NSDate *today = [NSDate date];
        NSDate *date = self.todoDueDate;

        NSDateComponents *components = [[NSDateComponents alloc] init];
        [components setCalendar:calendar];
        [components setYear:2065];
        [components setMonth:11];
        [components setDay:12];

        NSDate *dateFuturoSomeday = [calendar dateFromComponents:components];

        NSCalendar *calendar1 = [NSCalendar currentCalendar];
        NSDateComponents *components1 = [[NSDateComponents alloc] init];
        [components setCalendar:calendar1];
        [components setYear:2065];
        [components setMonth:11];
        [components setDay:13];

        NSDate *dateFuturoCompleted = [calendar1 dateFromComponents:components1];         


        NSDateComponents *date1Components = [calendar components:comps
                                                        fromDate: today];
        NSDateComponents *date2Components = [calendar components:comps
                                                        fromDate: date];
        NSDateComponents *date3Components = [calendar components:comps
                                                        fromDate: dateFuturoSomeday];
        NSDateComponents *date4Components = [calendar components:comps
                                                        fromDate: dateFuturoCompleted];


        today = [calendar dateFromComponents:date1Components];
        date = [calendar dateFromComponents:date2Components];
        dateFuturoSomeday = [calendar dateFromComponents:date3Components];
        dateFuturoCompleted = [calendar dateFromComponents:date4Components];

        NSLog(@"DATE FUTURO SOMEDAY: %@", dateFuturoSomeday);
        NSLog(@"DATE FUTURO COMPLETED: %@", dateFuturoCompleted);

问题是对于日志DATE FUTURO SOMEDAY,结果是:

2065-11-12 07:00:00 +0000

但是对于日期DUT FUTURO COMPLETED,结果是:

0001-01-01 06:59:56 +0000

为什么不

2065-11-13 07:00:00 +0000

可能是我累了,看不出问题。 欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

您正在设置components而不是components1。使用components1,如下面的代码段:

NSCalendar *calendar1 = [NSCalendar currentCalendar];
NSDateComponents *components1 = [[NSDateComponents alloc] init];
[components1 setCalendar:calendar1];
[components1 setYear:2065];
[components1 setMonth:11];
[components1 setDay:13];

希望它能起作用!! !!

答案 1 :(得分:1)

您在设置组件时犯了错字。

见以下行:

NSCalendar *calendar1 = [NSCalendar currentCalendar];
        NSDateComponents *components1 = [[NSDateComponents alloc] init];
        [components setCalendar:calendar1];
        [components setYear:2065];
        [components setMonth:11];
        [components setDay:13];

您在此处分配了components1,但在组件中填充了详细信息。它应该是:

NSCalendar *calendar1 = [NSCalendar currentCalendar];
            NSDateComponents *components1 = [[NSDateComponents alloc] init];
            [components1 setCalendar:calendar1];
            [components1 setYear:2065];
            [components1 setMonth:11];
            [components1 setDay:13];
相关问题