Andrea
Andrea

Reputation: 437

Set the time of the DatePicker

How do I set the time of the DatePicker at 00:00:00 of the current date?

   - (void) awakeFromNib
    {
        [datePicker setDateValue:[NSDate date]];
        NSDate *now = [NSDate date];
        int daysToAdd = 364;
        NSDate *newDate1 = [now dateByAddingTimeInterval:60*60*24*daysToAdd];
        [datePicker1 setDateValue:newDate1];
    }

Upvotes: 0

Views: 4348

Answers (1)

Dave DeLong
Dave DeLong

Reputation: 243146

cringe

It looks like you have two different datePickers? datePicker and datePicker1? What's up with that?

Also, this does not do what you're expecting:

NSDate *newDate1 = [now dateByAddingTimeInterval:60*60*24*364];

That is creating a new date that is exactly 31,449,600 seconds in the future. It is not doing anything other than that.

What you want to do is extract all of the date components from the current date and zero them out:

NSDate *now = [NSDate date];
NSDateComponents *nowComponents = [[NSCalendar currentCalendar] components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:now];

// technically these next lines are unnecessary, since we only pulled out the era-year-month-day, but they're included here for understanding/completeness:

[nowComponents setHour:0];
[nowComponents setMinute:0];
[nowComponents setSecond:0];

// now we can turn it back into a date:

NSDate *todayAtMidnight = [[NSCalendar currentCalendar] dateFromComponents:nowComponents];

Upvotes: 3

Related Questions