I've been searching this and couldn't quite find it. I have an object in a NSDictionary that contains a NSDate. Now standard NSDate objects are pretty long. and I want to show the user in dd-MMM format.
For eg: The original date may be 2012-04-23 00:00:00 +0000
, for which I want the date to appear as 23 Apr
I tried using NSDateComponents and NSDateFormatter but it didn't quite work. Probably I'm not figuring out the correct usage FOR the required format.
Here's the code for better understanding:
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);
The output is 2012-05-19 07:30:56 for From Dictionary, Date
and null for Formatted Date and MY DATE. And tmpDict
is the Dictionary Object that I'm using.
Thanks for the help, in advance.
Following from Duncan C's answer.
If the date is represented as a string, first turn it into a date and then use the NSDateFormatter on it. Assuming the format will remain the same it would be
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss Z"];
NSString *dateString = [dictionaryObject objectForKey: @"eventDate"];
NSDate *date = [dateFormatter dateFromString: dateString];
Then you can do what you are doing at the moment to the date
object.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM"];
NSString *formattedDateString = [dateFormatter stringFromDate:myDate];
[dateFormatter release];
It sounds like the object you are fetching from your dictionary with the key eventDate is a string, not a date.
Try this code:
NSDate *myDate=[tmpDict objectForKey:@"eventDate"];
NSLog(@"myDate class = %@", [myDate class]);
I bet it shows a class of NSString or one of it's subclasses, not an NSDate.
来源:https://stackoverflow.com/questions/10574248/formatting-date-to-dd-mmm-in-ios