我正在使用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
?
可能是我累了,看不出问题。 欢迎任何帮助。
答案 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];