NSString的NSDate调整为设备时区

时间:2013-03-06 13:31:39

标签: iphone ios objective-c nsdate

我有NSString这样:

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

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

示例:

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

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

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

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

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

答案 2 :(得分: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