2

我一直在寻找这个,并不能完全找到它。我在包含 NSDate 的 NSDictionary 中有一个对象。现在标准的 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,为空。并且tmpDict是我正在使用的字典对象。

我在这里先向您的帮助表示感谢。

4

3 回答 3

3

根据Duncan C的回答。

如果将日期表示为字符串,则先将其转为日期,然后在其上使用 NSDateFormatter。假设格式将保持不变

[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss Z"]; 
NSString *dateString = [dictionaryObject objectForKey: @"eventDate"];
NSDate *date = [dateFormatter dateFromString: dateString];

然后你可以对对象做你现在正在做的事情date

于 2012-05-13T20:36:08.533 回答
2
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM"];
NSString *formattedDateString = [dateFormatter stringFromDate:myDate];
[dateFormatter release];
于 2012-05-13T18:47:16.187 回答
1

听起来您使用键 eventDate 从字典中获取的对象是字符串,而不是日期。

试试这个代码:

NSDate *myDate=[tmpDict objectForKey:@"eventDate"]; 
NSLog(@"myDate class = %@", [myDate class]);

我敢打赌它显示了一个 NSString 类或其子类,而不是 NSDate。

于 2012-05-13T19:30:08.780 回答