I am having a double value that represents a NSTimeInterval
. I want to create the correct date from the double value, here is my code. I am getting the output, but there is some changes from the actual value.
NSString *modiDate = [NSString stringWithFormat:@"1338229800"]; //example time interval value
NSNumber *time = [NSNumber numberWithDouble:([modiDate doubleValue] - 3600)];
NSTimeInterval interval = [time doubleValue];
NSDate *online = [NSDate date];
online = [NSDate dateWithTimeIntervalSince1970:interval];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm:ss aaa"];
NSLog(@"result: %@", [dateFormatter stringFromDate:online]);
What went wrong here? Any idea?
EDIT:
For testing first i converted a date to NSTimeInterval
and tried to get back the date.
Here is the code and output.
NSString *modDate = [NSString stringWithFormat:@"5/30/2012 2:02:55 PM"];
NSDateFormatter *format = [[NSDateFormatter alloc]init];
[format setDateFormat:@"MM/dd/yyyy HH:mm:ss aaa"];
NSDate *dateFromString1 = [[NSDate alloc] init];
dateFromString1 = [format dateFromString:modDate];
[format release];
NSTimeInterval timeInterval1 = [dateFromString1 timeIntervalSince1970];
NSLog(@"timeinterval : %f",timeInterval1);
NSDate *online = [NSDate date];
online = [NSDate dateWithTimeIntervalSince1970:timeInterval1];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm:ss aaa"];
NSLog(@"result: %@", [dateFormatter stringFromDate:online]);
and the output is:
result: 05/30/2012 12:02:55 PM actual date:5/30/2012 2:02:55 PM
First, NSTimeInterval is a float, so you don't need to use NSString or NSNumber (NSNumber are made for storing numbers in dictionaries or arrays).
You can simplify your code as:
NSTimeInterval interval = 1338229800;
interval -= 3600;
NSDate *online = [NSDate dateWithTimeIntervalSince1970:interval];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm:ss aaa"];
NSLog(@"result: %@", [dateFormatter stringFromDate:online]);
This give me : 05/28/2012 19:30:00 PM
It corresponds to the initial value : 1338229800 minus one hour (- 3600 sec).
EDIT :
In your edit, your write :
NSString *modDate = [NSString stringWithFormat:@"5/30/2012 2:02:55 PM"];
NSDateFormatter *format = [[NSDateFormatter alloc]init];
[format setDateFormat:@"MM/dd/yyyy HH:mm:ss aaa"];
But you should check the date format paterns page:
2:02:55 PM
corresponds to @"h:mm:ss a"
and not to "HH:mm:ss aaa"