2011-11-16 164 views
-2

我使用的日期格式为“16-11-2011”。但我想将其转换成“11月16日” 我写的代码,但空值情况下,代替的格式为“11月16日”将日期从一种格式转换为另一种格式时生成空值

为了这个,我已经写了下面的代码

NSDate *checkIn = [[NSUserDefaults standardUserDefaults]valueForKey:@"CHECK_1"]; 
    NSLog(@"Date: %@",checkIn); 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 

    [formatter setDateFormat:@"dd MMM"]; 
    NSString *checkInDate = [formatter stringFromDate:checkIn]; 
    NSLog(@"checkInDate:%@",checkInDate); 

和有结果显示通过的NSLog声明如下:

Date: 16-11-2011 
checkInDate:(null) 

,所以我不能够将其转换成我想要

格式PLZ帮我送问题不大。

回答

1

我怀疑checkInNSString而不是NSDate。 因此,您必须首先将其转换为NSDate,然后将其转换回所需的字符串格式。

NSString *checkIn = [[NSUserDefaults standardUserDefaults]valueForKey:@"CHECK_1"]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 

NSDate *checkInTempDate = [dateFormatter dateFromString:checkIn]; 

[dateFormatter setDateFormat:@"dd MMM"]; 
NSString *checkInDate = [dateFormatter stringFromDate:checkInTempDate]; 
1

的问题是在第一行:。

NSDate *checkIn = [[NSUserDefaults standardUserDefaults]valueForKey:@"CHECK_1"]; 

NSUserDefaults没有一个方法valueForKey,这是关键值编码”,即返回值NSUserDefaults也不会处理日期是什么你是从NSUserDefaults取回是一个字符串,由怪癖NSDate是接受这一点。

最后4行代码是正确的,但需要一个日期,CHECKIN是一个字符串。

为了测试该放这行代码的第一行之后,忽略任何不兼容的类型警告):

NSLog(@"class name: %s", class_getName([checkIn class])); 
相关问题