Я искал и не нашел точного вопроса, подобного моему, поэтому здесь ничего не говорится:
У меня есть строка NSString, содержащая ключ, который я извлекаю из XML-канала.Ключом является время в 24-часовом формате (например, 13:30 или 15:00). Я хотел бы преобразовать строку NSString в NSDate и преобразовать ее в соответствующий часовой пояс на основе установленного часового пояса устройства.Ключ Unicode HH: mm (24:00), поэтому мне любопытно, почему это не работает так, как должно.
Я уже получил базовую схему, которая должна работать, но, увы, нет.2-й NSLog (Got NS Date) возвращает ноль, а окончательный журнал возвращает странное число (1969-12--2147483629 -596: -31: -23 +0000, если быть точным.) Что я здесь делаю неправильно?
Заранее спасибо,
NSString *dateString = [dict objectForKey:@"24hrdate"];
NSLog(@"NSString Date: %@", dateString);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSDate *sourceDate = [formatter dateFromString:dateString];
NSLog(@"Got NS Date: %@", sourceDate);
NSTimeZone *sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone *destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
NSLog(@"Final Date: %@", destinationDate);