dateFromString返回错误的日期

时间:2011-08-11 14:54:34

标签: objective-c

我有以下代码:

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

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

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:12)

小写mm表示分钟而非月份,月份使用大写MM

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

答案 1 :(得分:8)

NSDate description将始终使用自己的格式打印日期,通常用于+000时区。您需要使用日期格式来获取格式正确的日期并使用MM for month not mm

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

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