I am using the following code to try and display in a time in a table cell.
TimeSlot *timeSlot = [timeSlots objectAtIndex:indexPath.row];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSLog(@"Time: %@", timeSlot.time);
NSDate *mydate = timeSlot.time;
NSLog(@"Time: %@", mydate);
NSString *theTime = [timeFormat stringFromDate:mydate];
NSLog(@"Time: %@", theTime);
The log output is this:
- 2010-04-14 10:23:54.626 MyApp[1080:207] Time: 2010-04-14T10:23:54
- 2010-04-14 10:23:54.627 MyApp[1080:207] Time: 2010-04-14T10:23:54
- 2010-04-14 10:23:54.627 MyApp[1080:207] Time: (null)
I am new to developing for the iPhone and as it all compiles w开发者_开发问答ith no errors or warnings I am at a loss as to why I am getting NULL in the log. Is there anything wrong with this code?
Thanks
Further Info
I used the code exactly from your answer lugte098 just to check and I was getting dates which leads me to believe that my TimeSlot class can't have a date correctly set in it's NSDate property. So my question becomes - how from XML do I set a NSDate property?
I have this code (abbreviated):
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *) string {
if ([currentElement isEqualToString:@"Time"]) {
currentTimeSlot.time = string
}
}
Thanks
Based on the edited question:
You are setting a string from your XML into your timeSlot
object. NSDateFormatter
expects to be give an NSDate
to format, so this is why your original question fails.
So you are asking a second question, which is how to create a a NSDate from an NSString. See the docs, you can use either dateFromString:
, getObjectValue:forString:range:error:
or getObjectValue:forString:errorDescription:
. Therefore:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
currentTimeSlot.time = [df dateFomString:string];
And if it is nil, you should be using one of the error returning methods.
This might help:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSDate *now = [[NSDate alloc] init];
NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
you need to set
[timeFormat setDateFormat:@"dd MMMM YYYY"];
before
NSString *theTime = [timeFormat stringFromDate:mydate];
this line
精彩评论