NSDate: я ввожу только компоненты времени utc и правильно устанавливаю календарь, но NSDate каким-то образом пересчитывается в мой часовой пояс - PullRequest
0 голосов
/ 17 октября 2018

У меня есть дата в виде строки в формате UTC.Я правильно создаю NSDate и устанавливаю календарь на UTC.Тем не менее, дата в конце находится в местном часовом поясе.Если мое UTC время было 21:25, и я настроил его с помощью этого кода, я в итоге получаю через NSLog новую дату 23:25.Почему?

NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setYear:[[timeStamp substringWithRange:NSMakeRange(0, 4)] floatValue]];
[dateComponents setMonth:[[timeStamp substringWithRange:NSMakeRange(5, 2)] floatValue]];
[dateComponents setDay:[[timeStamp substringWithRange:NSMakeRange(8, 2)] floatValue]];
[dateComponents setHour:[[timeStamp substringWithRange:NSMakeRange(11, 2)] floatValue]];
[dateComponents setMinute:[[timeStamp substringWithRange:NSMakeRange(14, 2)] floatValue]];

NSCalendar *calendar = [[NSCalendar alloc]  initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSDate *configuredDate = [calendar dateFromComponents:dateComponents];

Кстати: я нахожусь в часовом поясе Берлина.Так что +2 было бы правильно, но все же, дата должна быть в UTC?!

Вот редактирование:

2018-10-17 19: 11: 54.964754 + 0200 FollowMe [2005: 91382] Отметка времени до: 2018-10-17T17: 37Z

2018-10-17 19: 11: 54.965017 + 0200 FollowMe [2005: 91382] Настроенная дата: ср 17 окт. 19:37:00 2018

2018-10-17 19: 11: 54.965096 + 0200 FollowMe [2005: 91382] Интервал времени: 1539797820.000000

...