Iss*_*ZH. 0 calendar date objective-c nsdatecomponents ios
我有两个日期字符串,我希望在日期之间得到.例如,
NSString *startDate = @"25-01-2014";
NSString *endDate = @"02-02-2014";
Run Code Online (Sandbox Code Playgroud)
在两个日期之间(26-01-2014,27-01-2014,28-01-2014 .......)最好包括startDate和endDate.我设法找到的大多数问题都要求天数.但我需要它才能成为实际日期.无论如何,我可以在日期之间进入吗?
NSString *start = @"2010-09-01";
NSString *end = @"2010-12-05";
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [f dateFromString:start];
NSDate *endDate = [f dateFromString:end];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
fromDate:startDate
toDate:endDate
options:0];
NSLog(@"Difference in date components: %d", components.day);
Run Code Online (Sandbox Code Playgroud)
我设法找到这只返回天数差异.
Vik*_*ica 10
NSString *start = @"2010-09-01";
NSString *end = @"2010-12-05";
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [f dateFromString:start];
NSDate *endDate = [f dateFromString:end];
NSMutableArray *dates = [@[startDate] mutableCopy];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
fromDate:startDate
toDate:endDate
options:0];
for (int i = 1; i < components.day; ++i) {
NSDateComponents *newComponents = [NSDateComponents new];
newComponents.day = i;
NSDate *date = [gregorianCalendar dateByAddingComponents:newComponents
toDate:startDate
options:0];
[dates addObject:date];
}
[dates addObject:endDate];
Run Code Online (Sandbox Code Playgroud)
数组dates现在包含之间的日期列表startDate和endDate包括那些午夜在设备的时区.
请注意,在某些时区上,这可能会导致问题,因为此时可能会发生与夏令时的切换,请参阅WWDC 2011视频"会话117 - 执行日历计算"以获取更多信息.一个技巧是将小时转移到保存时间,即中午,进行计算,然后减去12小时.
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |