dateFromString返回错误的日期

sam*_*n01 2 objective-c

我有以下代码:

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-mm-dd";
    NSDate *cDate = [formatter dateFromString:thisLine];
    NSLog(@"cDate '%@'  thisLine '%@'", cDate, thisLine);  
Run Code Online (Sandbox Code Playgroud)

NSLog打印:cDate'2011-01-10 05:07:00 +0000'hisLine'2011-07-10'而cDate应该是'2011-07-10'

有什么想法吗?

谢谢

rck*_*nes 12

小写mm是几分钟而不是几个月,月份使用大写MM:

   NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd";
    NSDate *cDate = [formatter dateFromString:thisLine];
    NSLog(@"cDate '%@'  thisLine '%@'", cDate, thisLine);  
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 8

NSDate说明将始终打印日期与自己的格式,一般的+000时区.您需要使用日期格式来获取正确格式化的日期,并使用MM作为月而不是mm.

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
NSDate *cDate = [formatter dateFromString:thisLine];
NSLog(@"cDate '%@'  thisLine '%@'", [formatter stringFromDate:cDate], thisLine);
Run Code Online (Sandbox Code Playgroud)

- (NSString*)说明
讨论
不保证表示在操作系统的不同版本中保持不变.要格式化日期,您应该使用日期格式化程序对象(请参阅NSDateFormatter和数据格式指南)