2015-06-04 3 views
0

У меня есть следующая дата в виде строки: 2015-04-18T08: 35: 00.000 + 03: 00, и я хотел бы получить смещение от GMT в секундах, то есть 10800.Получение смещения временной зоны от строки даты

Я могу разделить строку даты символом «+», иметь строку xy: ab, а затем вычислить смещение с помощью формулы xy * 3600 + a * 60 + b.

Есть ли лучший способ добиться того, что мне нужно, например, используя NSDate и NSDateFormatter?

+1

Используйте 'NSDateFormatter'. – Droppy

+0

Это хороший момент, но проблема в том, что я не знаю, как это сделать. Я могу создать экземпляр NSDateFormatter и установить формат даты yyyy-MM-dd'T'HH: mm: ss.SSSZ. Но как я могу получить номер, который я хочу? – Merlin

ответ

1

Я, наконец, в конечном итоге, используя этот код:

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]; 
Смежные вопросы