2010-03-09 2 views
1

Я не могу понять, как подсчитать количество секунд до 6:00 вечера на текущий день. Вам нужно установить ограничение для выбора даты, чтобы пользователь мог выбирать время только с этого момента до 18:00.как считать секунды до 6:00 вечера в Objective-C

Работа с NSDate, по-видимому, в лучшем случае болезненна.

ответ

4

Вы можете использовать NSCalendar класс, чтобы выполнить некоторые вычисления для вас. Код может выглядеть следующим образом:

NSCalendar* calendar = [NSCalendar currentCalendar]; 
NSDateComponents* comps = [calendar components: NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]]; 
[comps setHour: 18]; 
[comps setMinute: 0]; 
[comps setSecond: 0]; 
NSDate *pmDate = [calendar dateFromComponents:comps]; 
NSTimeInterval interval = [pmDate timeIntervalSinceNow]; 
+0

NSTimeInterval - это двойник, отбрасывающий это поперек к int, дал мне результат. Спасибо :) 8 строк кода для подсчета количества секунд до 6 вечера ... и я думал, что моя жена была многословной. – oden

0

Вы могли бы попробовать что-то вроде этого (от iphonedevsdk.com):

//NSDate_ext.h 

#import <Foundation/Foundation.h> 

@interface NSDate (Extend) 
- (BOOL)isBetween:(NSDate *)dateStart:(NSDate *)dateEnd; 
@end 

//NSDate_ext.m 

#import "NSDate_ext.h" 

@implementation NSDate (Extend) 

- (BOOL)isBetween:(NSDate *)dateStart:(NSDate *)dateEnd { 

    if ([self compare:dateEnd] == NSOrderedDescending) 
     return NO; 

    if ([self compare:dateStart] == NSOrderedAscending) 
     return NO; 

    return YES; 
} 

@end 

Проверьте, введенное время пользователя находится между диапазоном дат.

+0

Извините, это проблема с пользовательским интерфейсом, вам нужно изменить видимый временной диапазон в слайдере. Спасибо в любом случае. – oden

Смежные вопросы