Initialize a NSDate object with a specific time

Try

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:6];
[comps setMonth:5];
[comps setYear:2004];

NSCalendar *gregorian = [[NSCalendar alloc]
    initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];

You should be able to compare with date after that.

Maybe you mean something like. I think will set using today's date and then you can create NSDateComponents from that and set time values.

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
                    [gregorian components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:today];
[weekdayComponents setHour:12];
[weekdayComponents setMinute:10];
[weekdayComponents setSecond:30];

To initialize an NSDate with the present date at 2, you'll have to split an NSDate with components year, month, and day, e.g.

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents = [gregorian
                                       components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
                                       fromDate:today];

Set the hours to 2

weekdayComponents.hour = 2;

And then create a new NSDate by those components

NSDate *todayAt2 = [gregorian dateFromComponents:weekdayComponents];

You need to use an NSCalendar object to convert NSDateComponents to an NSDate. See Apple's documentation on Creating a Date from Components.

Tags:

Iphone

Nsdate