在iOS中将日期格式化为dd-MMM

时间:2012-05-13 18:40:41

标签: iphone objective-c ios nsdate nsdateformatter

我一直在搜索这个并且找不到它。我在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是我正在使用的字典对象。

提前感谢您的帮助。

3 个答案:

答案 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。