我的日期格式为“16-11-2011”。但我想把它转换成“11月16日” 我为它编写了代码但是生成了null值而不是格式“16 Nov”
为此我写了以下代码
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)
因此我无法将其转换为我想要的格式
帮助我解决问题。
答案 0 :(得分:1)
我怀疑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];
答案 1 :(得分:1)
问题出在第一行:
NSDate *checkIn = [[NSUserDefaults standardUserDefaults]valueForKey:@"CHECK_1"];
NSUserDefaults
没有方法valueForKey
,它是键值编码“,它返回一个值。NSUserDefaults
也不处理日期。你从{{返回的是什么1}}是一个字符串,由一个quirk NSUserDefaults
接受。
最后4行代码是正确的,但需要一个日期,checkIn是一个字符串。
为了测试这个,将这行代码放在第一行之后,忽略任何不兼容的类型警告):
NSDate