将日期从一种格式转换为另一种格式时生成空值
问题描述:
我使用的日期格式为“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帮我送问题不大。
答
我怀疑checkIn
是NSString
而不是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];
答
的问题是在第一行:。
NSDate *checkIn = [[NSUserDefaults standardUserDefaults]valueForKey:@"CHECK_1"];
NSUserDefaults
没有一个方法valueForKey
,这是关键值编码”,即返回值NSUserDefaults
也不会处理日期是什么你是从NSUserDefaults
取回是一个字符串,由怪癖NSDate
是接受这一点。
最后4行代码是正确的,但需要一个日期,CHECKIN是一个字符串。
为了测试该放这行代码的第一行之后,忽略任何不兼容的类型警告):
NSLog(@"class name: %s", class_getName([checkIn class]));