У меня есть две даты, которые заданы нажатием кнопки. Они хранятся в пользовательском объекте, который наследуется от NSObject.timeIntervalSinceDate сообщает о неправильном значении
Свойства:
@property (nonatomic, strong) NSDate *firstDate;
@property (nonatomic, strong) NSDate *secondDate;
Пользовательские методы получения и установки:
- (void)setFirstDate:(float)firstDate {
_firstDate = [self dateByOmittingSeconds:firstDate];
}
- (void)setSecondDate:(float)secondDate {
_secondDate = [self dateByOmittingSeconds:secondDate];
}
- (NSDate *)firstDate {
return [self dateByOmittingSeconds:_firstDate];
}
- (NSDate *)secondDate {
return [self dateByOmittingSeconds:_secondDate];
}
Функция, которая удаляет секундной часть NSDate:
-(NSDate *)dateByOmittingSeconds:(NSDate *)date
{
// Setup an NSCalendar
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian];
// Setup NSDateComponents
NSDateComponents *components = [gregorianCalendar components: NSUIntegerMax fromDate: date];
// Set the seconds
[components setSecond:00];
return [gregorianCalendar dateFromComponents: components];
}
firstDate is 08:00 и secondDate 13:00, оба установлены сегодня.
Я получаю расстояние между двумя датами и форматировать их, как это:
NSString *myString = [self timeFormatted:[currentModel.secondDate timeIntervalSinceDate:currentModel.firstDate]];
- (NSString *)timeFormatted:(int)totalSeconds
{
// int seconds = totalSeconds % 60;
int minutes = (totalSeconds/60) % 60;
int hours = totalSeconds/3600;
return [NSString stringWithFormat:@"%luh %lum", (unsigned long)hours, (unsigned long)minutes];
}
Но он сообщает 4h 59m, 17999,254732 секунд.
Кто-нибудь знает, почему это так?
Спасибо!
я придумал эту идею себе, что, возможно, было меньше блок и пытался найти как setMillisecond или аналогичные, но я не мог найти его. Nanosecond - это единица, которую я искал - отлично работает сейчас, спасибо большое! – Erik