как считать секунды до 6:00 вечера в Objective-C - PullRequest
1 голос
/ 09 марта 2010

Не могу понять, как посчитать количество секунд до 18:00 текущего дня. Нужно установить предел для выбора даты, чтобы пользователь мог выбрать только время с 18:00 до 18:00.

Работа с NSDate в лучшем случае кажется болезненной.

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

Вы можете использовать класс 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 голосов
/ 09 марта 2010

Вы можете попробовать что-то вроде этого (из 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 голосов
/ 09 марта 2010

Вы всегда можете вернуться к C http://linux.die.net/man/3/mktime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...