Часовой пояс один час выходной
Я работаю с унаследованным приложением 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;
}