2013-03-06 16 views
-1

我有一个NSString这样的:的NSDate调节到设备timzone

NSString *playTime = @"20:45";// GMT 

我需要将此字符串转换为NSDate(仅小时和秒),然后调节到设备时区。

实施例:

如果用户设备时区设置为GMT,我需要这样的结果:@ “20:45”;

如果用户设备时区设置为GMT + 2,我需要这样的结果:@ “22点45分”;

+0

你可以看看这里的更多信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class /Reference/Reference.html – MasterRazer 2013-03-06 13:37:43

+1

为什么你需要'NSDate'来做到这一点? – trojanfoe 2013-03-06 13:37:55

回答

1

试试这个

NSString *gmtDateString = @"20:45"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
[dateFormatter setDateFormat:@"HH:mm"]; 

//Now you have date in GMT time zone by default dateFormatter timezone would be in local time zone 
NSDate *date = [dateFormatter dateFromString:dateString]; 

//set to local time zone 
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

//Now you have string in localDate format 
NSString *localDateString = [dateFormatter stringFromDate:date]; 
+0

谢谢@Anupdas它工作正常。 – user2139969 2013-03-06 13:53:22

+0

很高兴帮助你:) – Anupdas 2013-03-06 13:59:29

0

按照您的要求使用此代码进行日期转换。

NSDateFormatter *dateFormat = [NSDateFormatter new]; 
    [dateFormat setDateFormat:@"HH:mm"]; 
    [dateFormat setTimeZone:[NSTimeZone localTimeZone]]; 
    logDate = [dateFormat dateFromString:@"20:45"]; 
    NSLog(@"Date %@",[dateFormat stringFromDate:logDate]); 
0

下面的代码将计算时间w.r.t.当地时区。
假设我的时区是GMT+05:30所以时间05:30将成为00:00

NSString *playTime = @"20:45"; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"HH:mm"; 
NSDate *date = [formatter dateFromString:playTime]; 
NSLog(@"%@",date); 

日志是:2000-01-01 15:15:00 +0000