我将以下日期作为字符串:2015-04-18T08:35:00.000 + 03:00我希望在几秒钟内获得GMT的偏移,即10800。
我可以用'+'字符分割日期字符串,有一个字符串xy:ab然后用公式xy * 3600 + a * 60 + b计算偏移量。
有没有更好的方法来实现我的需求,例如使用NSDate和NSDateFormatter?
答案 0 :(得分:2)
我终于最终使用了这段代码:
NSString *dateStringWithTZ = @"2015-04-18T08:35:00.000+03:00";
// Create date object using the timezone from the input string.
NSDateFormatter *dateFormatterWithTZ = [[NSDateFormatter alloc] init];
dateFormatterWithTZ.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
NSDate *dateWithTZ = [dateFormatterWithTZ dateFromString:dateStringWithTZ];
// Cut off the timezone and create date object using GMT timezone.
NSString *dateStringWithoutTZ = [dateStringWithTZ substringWithRange:NSMakeRange(0, 23)];
NSDateFormatter *dateFormatterWithoutTZ = [[NSDateFormatter alloc] init];
dateFormatterWithoutTZ.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS";
dateFormatterWithoutTZ.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSDate *dateWithoutTZ = [dateFormatterWithoutTZ dateFromString:dateStringWithoutTZ];
// Calculate the difference.
NSInteger difference = [dateWithoutTZ timeIntervalSinceReferenceDate] - [dateWithTZ timeIntervalSinceReferenceDate];
return [NSNumber numberWithInteger:difference];