我正在尝试使用以下代码将字符串转换为NSDate。
NSString *old = [[NSUserDefaults standardUserDefaults] valueForKey:@"OLD_DATE"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy"];
NSDate *oldDate = [formatter dateFromString:old];
NSLog(@"Old Date : %@",oldDate);
我将OLD_DATE
设置如下:
NSDate *oldDate = [NSDate date];
NSString *old = [[NSString stringWithFormat:@"%@",oldDate] retain];
[[NSUserDefaults standardUserDefaults] setObject:old forKey:@"OLD_DATE"];
但是我在NSLog(@"Old Date : %@",oldDate);
中得到了空:(
我发现许多类似的links具有相同的代码并且可以正常工作。
那么我的代码可能有什么问题?
答案 0 :(得分:4)
不要将日期转换为字符串:
NSDate *oldDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:oldDate forKey:@"OLD_DATE"];
只读出日期:
NSDate *old = [[NSUserDefaults standardUserDefaults] objectForKey:@"OLD_DATE"];
在保存到NSUserDefaults
之前,确实没有任何理由将日期与字符串对齐。
但是如果你想将字符串回到日期,你将需要正确的格式。
NSDate描述类似于2011-11-11 12:58:36 +0000
NSString *old = [[NSUserDefaults standardUserDefaults] valueForKey:@"OLD_DATE"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *oldDate = [formatter dateFromString:old];
NSLog(@"Old Date : %@",oldDate);