iPhone:无法从字符串转换日期

时间:2011-11-11 12:51:32

标签: iphone objective-c cocoa-touch ios4 nsdate

我正在尝试使用以下代码将字符串转换为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具有相同的代码并且可以正常工作。

那么我的代码可能有什么问题?

1 个答案:

答案 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);