Objective c 从日期字符串中检索年和月

Objective c 从日期字符串中检索年和月,objective-c,ios,ios5,nsdate,nsdateformatter,Objective C,Ios,Ios5,Nsdate,Nsdateformatter,我想从这样的日期检索年份和月份:2011-12-23 10:45:01,没有运气 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; [dateFormatter setDateFormat:@"yyyy"]; NSLog(@"Date = %@",[dateFormatter dateF

我想从这样的日期检索年份和月份:2011-12-23 10:45:01,没有运气

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[dateFormatter setDateFormat:@"yyyy"];
NSLog(@"Date = %@",[dateFormatter dateFromString:@"2011-12-23 10:45:01"]);
[dateFormatter release];

Date=(null),我不明白为什么。

您必须分两步执行,首先匹配整个日期,然后输出所需的位:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2011-12-23 10:45:01"];

//now you have the date, you can output the bits you want

[dateFormatter setDateFormat:@"yyyy"];
NSString *year = [dateFormatter stringFromDate:date];

[dateFormatter setDateFormat:@"MM"];
NSString *month = [dateFormatter stringFromDate:date];

[dateFormatter release];

这一点已经得到了答复

具体而言:

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

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];

NSLog(@"\n"
  "theDate: |%@| \n"
  "theTime: |%@| \n"
  , theDate, theTime);

[dateFormat release];
[timeFormat release];
[now release];
这回答了一个问题,但不是被问到的问题;-)