如何獲取ios中兩個日期之間的天數名稱?獲取ios中兩個日期之間的天數名稱?
例子:
Input: Start Date: 3-11-2012 End date: 5-11-2012 Output: 3-11-2012 Wednesday 4-11-2012 Thursday 5-11-2012 Friday
謝謝..
如何獲取ios中兩個日期之間的天數名稱?獲取ios中兩個日期之間的天數名稱?
例子:
Input: Start Date: 3-11-2012 End date: 5-11-2012 Output: 3-11-2012 Wednesday 4-11-2012 Thursday 5-11-2012 Friday
謝謝..
試試這個,
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [df dateFromString:@"2012-07-20"]; // your start date
NSDate *endDate = [NSDate date]; // your end date
NSDateComponents *dayDifference = [[NSDateComponents alloc] init];
NSMutableArray *dates = [[[NSMutableArray alloc] init] autorelease];
NSUInteger dayOffset = 1;
NSDate *nextDate = startDate;
do {
[dates addObject:nextDate];
[dayDifference setDay:dayOffset++];
NSDate *d = [[NSCalendar currentCalendar] dateByAddingComponents:dayDifference toDate:startDate options:0];
nextDate = d;
} while([nextDate compare:endDate] == NSOrderedAscending);
[df setDateStyle:NSDateFormatterFullStyle];
for (NSDate *date in dates) {
NSLog(@"%@", [df stringFromDate:date]);
}
[df release];
輸出爲:
Friday, July 20, 2012
Saturday, July 21, 2012
Sunday, July 22, 2012
Monday, July 23, 2012
Tuesday, July 24, 2012
這是你所需要的:
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"mm-dd-yyyy"];
NSDate *inputDate = [inputFormatter dateFromString:@"3-11-2012"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"mm-dd-yyyy EEEE"];
NSString *output = [outputFormatter stringFromDate:inputDate];
NSLog(@"%@",output);
[inputFormatter release];
[outputFormatter release];
入住此解決方案:
NSDateComponents *components;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSDate *startDate = [dateFormat dateFromString:@"3-11-2012"];
NSDate *endDate = [dateFormat dateFromString:@"5-11-2012"];
[dateFormat setDateFormat:@"dd-MM-yyyy, EEEE"];
components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit fromDate:startDate toDate:endDate options:0];
int days = [components day];
for (int x = 0; x <= days; x++) {
NSLog(@"%@", [dateFormat stringFromDate:startDate]);
startDate = [startDate dateByAddingTimeInterval:(60 * 60 * 24)];
}
輸出是:
03-11-2012, Saturday
04-11-2012, Sunday
05-11-2012, Monday
謝謝傷痕... +1 – Mani 2012-07-24 05:54:42
下面是做到這一點的一種方法:使用NSCalendar給你
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setYear:2012];
[dateComponents setMonth:11];
[dateComponents setDay:03];
NSDate *date1 = [gregorianCalendar dateFromComponents:dateComponents];
[dateComponents setYear:2012];
[dateComponents setMonth:11];
[dateComponents setDay:05];
NSDate *date2 = [gregorianCalendar dateFromComponents:dateComponents];
NSDateFormatter *outputDateFormatter = [[NSDateFormatter alloc] init];
[outputDateFormatter setDateFormat:@"dd-MM-yyyy EEEE"];
NSDate *dayDate;
dayDate = date1;
NSLog(@"%@", [outputDateFormatter stringFromDate:dayDate]);
do {
dayDate = [dayDate dateByAddingTimeInterval:86400];
NSLog(@"%@", [outputDateFormatter stringFromDate:dayDate]);
} while ([dayDate compare:date2]==NSOrderedAscending);
(和你的用戶)顯示一個更大的靈活性d操縱日期。
查看['NSDateFormatter'](https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html),使用格式字符串@ 「dMy」將@「3-11-2012」和@「5-11-2012」從字符串轉換爲日期,然後使用@「dMy EEEE」將結果日期轉換爲字符串,包括星期幾。 – Rob 2012-07-24 05:35:41
Ganesh ..不是天數...我想在兩個日期之間的日子的名字。 – Mani 2012-07-24 05:45:34
通過這個 http://stackoverflow.com/questions/4575689/objective-c-calculating-the-number-of-days-between-two-dates – 2012-07-24 05:45:58