我一直在搜索这个并且找不到它。我在NSDictionary中有一个包含NSDate的对象。现在标准的NSDate对象很长。我想以dd-MMM格式显示用户。
例如:原始日期可能为2012-04-23 00:00:00 +0000
,我希望日期显示为23 Apr
我尝试过使用NSDateComponents和NSDateFormatter,但它没有用。可能我没有弄清楚所需格式的正确用法。
以下是更好理解的代码:
NSLog(@"From Dictionary, Date = %@",[tmpDict objectForKey:@"eventDate"]);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss Z"];
NSString *dateString = [tmpDict objectForKey: @"eventDate"];
NSDate *date = [dateFormatter dateFromString: dateString];
NSLog(@"MY DATE: %@",date);
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"dd-MMM"];
NSString *formattedDateString = [dateFormatter2 stringFromDate:date];
NSLog(@"Formatted Date: %@",formattedDateString);
From Dictionary, Date
的输出为2012-05-19 07:30:56,格式化日期和MY DATE的输出为null。 tmpDict
是我正在使用的字典对象。
提前感谢您的帮助。
答案 0 :(得分:3)
来自Duncan C的答案。
如果日期表示为字符串,请先将其转换为日期,然后在其上使用NSDateFormatter。假设格式保持不变,那就是
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss Z"];
NSString *dateString = [dictionaryObject objectForKey: @"eventDate"];
NSDate *date = [dateFormatter dateFromString: dateString];
然后,您可以对date
对象执行您正在执行的操作。
答案 1 :(得分:2)
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM"];
NSString *formattedDateString = [dateFormatter stringFromDate:myDate];
[dateFormatter release];
答案 2 :(得分:1)
这听起来就像你从字典中获取的对象,其中eventDate是一个字符串,而不是日期。
试试这段代码:
NSDate *myDate=[tmpDict objectForKey:@"eventDate"];
NSLog(@"myDate class = %@", [myDate class]);
我敢打赌它会显示一类NSString或其中一个子类,而不是NSDate。