iOS - Converting time and date to user time zone
ios, timezone
Solution
You should do it the following way:
1) First, create an NSDateFormatter to get the NSDate sent from the server:
NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init];
[serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[serverFormatter setDateFormat:@"'at 'HH:mm' of 'dd/MM/yyyy"];
From Apple docs: note with the Unicode format string format, you should enclose literal text in the format string between apostrophes ('').
2) Convert the string (consider it is defined as `theString`) to a `NSDate`:
NSDate *theDate = [serverFormatter dateFromString:theString];
3) Create an `NSDateFormatter` to convert `theDate` to the user:
NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init];
[userFormatter setDateFormat:@"HH:mm dd/MM/yyyy"];
[userFormatter setTimeZone:[NSTimeZone localTimeZone]];
3) Get the string from the userFormatter:
NSString *dateConverted = [userFormatter stringFromDate:theDate];
Problem
I am sending some requests on a webserver that replies me time and date like this: ``` "at 18:58 of 05/08/2012" ``` I can figure out how to get the time and the date in 2 NSStrings(18:58, 05/08/2012). Note that the server's time zone is +00:00. What I want to accomplish is to present this time based on user's location. So for example if the reply from server is 23:30 at 05/08/2012 and the user's time zone is +2:00 I want to present him 1:30 at 06/08/2012. Any ideas?