Objective c 将本月的每个NSDate作为NSString获取

Objective c 将本月的每个NSDate作为NSString获取,objective-c,ios,Objective C,Ios,在我的应用程序中,我需要为每个月的每一天存储一个URL。从今往后。我该怎么做 到目前为止,将今天的NSDate作为NSString获取没有问题: NSDate* date = [NSDate date]; NSDateFormatter* format = [[[NSDateFormatter alloc]init]autorelease]; [format setDateFormat:@"yyyyMdd"]; NSString* str = [format stringFromDate:da

在我的应用程序中,我需要为每个月的每一天存储一个URL。从今往后。我该怎么做

到目前为止,将今天的NSDate作为NSString获取没有问题:

NSDate* date = [NSDate date];
NSDateFormatter* format = [[[NSDateFormatter alloc]init]autorelease];
[format setDateFormat:@"yyyyMdd"];

NSString* str = [format stringFromDate:date];
比如说,如果我想要一个字符串中的日期,比如说,17天前,我会怎么做呢


另外,我想使用这些日期并将它们存储在一个字符串中,以获取上个月每天的URL,例如www.myurl.com/pictureYEAR-month-day.jpg

只需获取当前日期的
NSDateComponents
,然后从中提取日期,并编写一个for循环,从中减去,直到得到1,每次从组件中创建一个日期发生更改的新日期,并将其存储为字符串

代码可能会说不止一个单词,所以现在就开始(测试):


这与亚历克斯的回答相似,但看起来他从月初到今天的任何一天都只有几天的时间。以下是您如何获得本月所有天数的方法:

NSDate *today = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];

NSMutableArray *datesThisMonth = [NSMutableArray array];
NSRange rangeOfDaysThisMonth = [cal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:today];

NSDateComponents *components = [cal components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSEraCalendarUnit) fromDate:today];
[components setHour:0];
[components setMinute:0];
[components setSecond:0];

for (NSInteger i = rangeOfDaysThisMonth.location; i < NSMaxRange(rangeOfDaysThisMonth); ++i) {
  [components setDay:i];
  NSDate *dayInMonth = [cal dateFromComponents:components];
  [datesThisMonth addObject:dayInMonth];
}

一旦有了一个
NSDate
,将其转换为字符串就非常简单了:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];

NSDate *date = ...;
NSString *string = [formatter stringFromDate:date];

对谢谢,这正是我想要的!如果我想更动态地创建它呢?(不是17天前)。例如,如果我想为每个月创建数组,在每个月的数组中包含每天的字符串?@user1096112您可以使用该
rangeOfUnit:inUnit:forDate:
来了解当前日期和(或多或少)的
NSMonthCalendarUnits
中有多少
nsYearCalendarUnits
在我的答案中的
for
循环周围添加另一个
for
循环。可能会有更多的问题,但这是总的想法。这很有效。你能告诉我如何得到今年的所有日期吗?
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];
NSDateComponents *diff = [[NSDateComponents alloc] init];
[diff setDay:-17];

NSDate *seventeenDaysAgo = [cal dateByAddingComponents:diff toDate:today];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];

NSDate *date = ...;
NSString *string = [formatter stringFromDate:date];