Я пытаюсь форматировать даты электронной почты, но форматер даты возвращает ноль, где последние пять символов -0800. Нет проблем с датой +0000. У меня есть список смешанных дат писем, заканчивающихся на +0000 и -0800
. Как мне добавить разницу в 8 часов к дате, чтобы она стала +0000? Некоторые письма отправлены из Лос-Анджелеса с датой происхождения 13 января 2020 года 05:22:03 -0800. Но я въезжаю в Великобританию с разницей в 8 часов.
13 января 2020 г. 05:22:03 -0800 должно выглядеть примерно 13 января 2020 г. 13:22:03 + 0000
- (NSDate *) date
{
NSString *d = [headers objectForKey:@"date"];
if (d == NULL)
return NULL;
NSRange rng = [d rangeOfString:@" ("];
if (rng.location != NSNotFound)
d = [d substringToIndex:rng.location];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]];
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSDate *result = [formatter dateFromString:d];
[formatter release];
return result;
}
13 января 2020 г. 05:22:03 -0800 is указанная c дата возвращает ноль. Любая помощь оценивается.
Я попробовал ниже заявления
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]];
[formatter setLocale:[[NSLocale currentLocale] autorelease]];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zz"];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzzz"];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZZ"];