Я полностью запутался в классе NSDate
Я делаю приложение планирования, где вы планируете по дате
Мне нужно просто знать, что расписание на 5.3.2011 13:45 (в каждом часовом поясе) и вот оно (если вы открываете приложение, а местное время - 5.3.2011 13:40, вы видите "в 5 минут "независимо от того, ваш часовой пояс GMT + 5 или GMT + 8) ...
но поскольку NSDate хранит МОМЕНТ ВРЕМЕНИ, а не дату (как указывает название класса), у меня возникают несколько проблем
1) NSDate не хранит часовой пояс, в котором он был сохранен, что означает, что если у меня есть дата
5.3.2011 13:45 я не знаю, будет ли это время по Гринвичу0 или по Гринвичу +1 (чем по местному времени его 5.3.2011 14:45)
2) я не могу сравнить, если две NSDates находятся в один и тот же день (например, 7 сентября), так как они могут быть в другом часовом поясе (так как дата представляет момент времени, в одной зоне этот момент времени соответствует одному дню , в другой часовой пояс в другой)
что делать?
я нашел такие методы, как
-(NSDate *) dateToLocalTime
{
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = [tz secondsFromGMTForDate: self];
return [NSDate dateWithTimeInterval: seconds sinceDate: self];
}
-(NSDate *) dateToGlobalTime
{
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = -[tz secondsFromGMTForDate: self];
return [NSDate dateWithTimeInterval: seconds sinceDate: self];
}
но работает не так, как ожидалось
потому что они используют
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = -[tz secondsFromGMTForDate: self];
это означает, что дата должна была быть сохранена в defaultTimezone для правильной работы