如何在Objective-C中格式化日期?

时间:2014-03-28 16:03:21

标签: ios nsdateformatter

每当我使用此代码时

NSString *theDateS = [name valueForKey:@"startDate"];
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
        NSDate *theDateFormatted = [dateFormat dateFromString: theDateS];

我收到了一条错误消息 " NSInvalidArgumentException',原因:' - [__ NSDate长度]:无法识别的选择器发送到实例0x9249290'"

我试图改变格式2014-06-10 16:00:00 +0000格式化2014-06-10 04:00:00 PM请帮助:(

2 个答案:

答案 0 :(得分:3)

变量theDateS不是您认为的那样:

NSString * theDateS = [name valueForKey:@"startDate"]; 

实际上是NSDate,而不是NSString。 Obj-c可能很奇怪。

如果你需要将它格式化为NSString,这是关于Stack Overflow的一个非常好的研究主题:

https://stackoverflow.com/search?q=NSDateFormatter

答案 1 :(得分:1)

您的整个代码块可以是:

NSDate *date = name[@"startDate"];

由于错误表明您实际上是从NSDate词典中获得name

请注意,如果您只是在NSLog上使用NSDate,它将以UTC格式显示。

如果您想将日期转换为特定的字符串格式以显示给用户,请按以下步骤更新您的代码:

NSDate *date = name[@"startDate"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
NSString *theDateFormatted = [dateFormat stringFromDate:date];