Часовой пояс один час выходной

Я работаю с унаследованным приложением OS X, чтобы исправить ошибку с отметками времени, которые отключены на 1 час. Я в основном разработчик C# и не имею опыта работы с Objective-C, поэтому я не знаю, что делаю.:)

Это вспомогательная функция, которая создает строку NSString с текущим временем:

+ (NSString*)formattedDate {
NSDateFormatter *formatter;
NSString        *dateString;

formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss."];
dateString = [formatter stringFromDate:[NSDate date]];

dateString = [dateString stringByReplacingOccurrencesOfString:@" " withString:@"T"];
dateString = [dateString stringByAppendingString:@"0000000+01:00"];

return dateString;
}

Я предполагаю, что это строка, которая добавляет "0000000+01:00", которая устанавливает часовой пояс GMT+1? Летом здесь часовой пояс GMT+2, так что это как минимум объяснит.

Правильное ли исправление будет примерно таким:

+ (NSString*)formattedDate {
NSDateFormatter *formatter;
NSString        *dateString;

formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss."];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];
dateString = [formatter stringFromDate:[NSDate date]];

dateString = [dateString stringByReplacingOccurrencesOfString:@" " withString:@"T"];

return dateString;
}

Или это сделает что-то отличное от дополнения?

Строка даты отправляется из клиентского приложения в серверное приложение как часть сообщения XML.

1 ответ

Я обновил код до следующего, и он работал:

+ (NSString*)formattedDate {
    NSDateFormatter *formatter;
    NSString        *dateString;

    formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ"];

    dateString = [formatter stringFromDate:[NSDate date]];

    return dateString;
}
Другие вопросы по тегам