How to convert time to the time zone of the iPhone device?

匿名 (未验证) 提交于 2019-12-03 01:55:01

问题:

I have a time in EST timezone, it is done using the NOW() function on the mysql server. Because my server is located in EST, the time stored is in EST. When I retrieve it from my app on the iPhone, I need to display it in the correct time zone of the user. How do I do that?

回答1:

I think it depends on what you mean by EST - if you mean East Coast US, then in general, that is 5 hours behind UTC (but not accounting for daylight saving), which should give you 04:00 EST. Try to avoid using abbreviations where possible, as they are ambiguous, e.g. EST is the abbreviation for both America/Detroit and Australia/Sydney. Using NSTimeZone initWithName will give more precise results.

The Chronos Time Zone Repository provides a nicely readable XML timezone database that really helps in understanding how time zones work (it's all rather messy and changeable).



回答2:

//You can use the below function to convert date to a time zone you wish

+ (NSDate *) convertDate:(NSDate *) date toTimeZone:(NSString *) timeZoneAbbreviation {      NSTimeZone *systemZone  = [NSTimeZone systemTimeZone];     NSTimeZone *zoneUTC     = [NSTimeZone timeZoneWithAbbreviation:timeZoneAbbreviation];     NSTimeInterval s        = [zoneUTC secondsFromGMT];      NSTimeZone *myZone      = [NSTimeZone timeZoneWithAbbreviation:[systemZone abbreviationForDate:date]];     NSTimeInterval p        = [myZone secondsFromGMT];      NSTimeInterval i = s-p;     NSDate *d = [NSDate dateWithTimeInterval:i sinceDate:date];      return d;  }   //Test case **note** cgUtil is the class this method is written thus change it accordingly  __block NSDate *now = [NSDate date]; NSLog(@"Current time:%@", now); [[[NSTimeZone abbreviationDictionary] allKeys] enumerateObjectsUsingBlock:^(NSString * abb, NSUInteger idx, BOOL *stop) {     NSLog(@"Time zone abb:%@:Time:%@",abb,[cgUtil convertDate:now toTimeZone:abb]); }]; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!