Просто собрав несколько ответов по Objective C, я (сейчас) имею эту вспомогательную функцию:

я естьtime вstring формат например2:00, Я хочу инициализировать этоNSDate с настоящимdate, Я пытался делать

   NSDateComponents *comps = [[NSDateComponents alloc] init];
   [comps setHour:2];

Я не могу сравнить это с датой. Пожалуйста помоги

Ответы на вопрос(4)

Решение Вопроса

Пытаться

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];

Вы должны быть в состоянии сравнить с датой после этого.

Может быть, вы имеете в виду что-то вроде. Я думаю, что установит, используя сегодняшнюю дату, а затем вы можете создать NSDateComponents из этого и установить значения времени.

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 setSeconds:30];
 agupta25 янв. 2011 г., 21:05
Да, еще раз спасибо за ваш быстрый ответ.
 agupta25 янв. 2011 г., 20:54
Спасибо за ответ. Есть способ установить это только с компонентом времени, дата должна присутствовать как дата. Будет возможно изменить только компонент времени объекта Date, инициализированного с помощью NSDate * mydate = [NSDate date];
 infiniteloop07 авг. 2012 г., 09:01
просто быстрая коррекция: это должно быть [weekdayComponents setSecond: 30];
 menapole25 янв. 2011 г., 21:00
Я думаю, что вы имеете в виду что-то вроде этого.
 agupta25 янв. 2011 г., 21:21
NSTimeInterval Diff = [lastDate timeIntervalSinceDate: weekdayComponents]; Это предупреждает меня о том, что Несовместимые типы Objective-C struct NSDateComponents ожидают struct NSDate.
  func initializeDateWithTime(date:NSDate,hrs:Int,minutes:Int) -> NSDate{
    let today = date
     let gregorian:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
     let dateComponents = gregorian.components([.Year, .Month, .Day], fromDate: today)

     dateComponents.hour = hrs;
     dateComponents.minute = minute;


     let todayAtX = gregorian.dateFromComponents(dateComponents)
     return todayAtX!
}

NSCalendar объект для преобразованияNSDateComponents чтобыNSDate, Смотрите документацию Apple наСоздание даты из компонентов.

 agupta25 янв. 2011 г., 22:29
Еще раз спасибо за ваш ответ.
 agupta25 янв. 2011 г., 20:59
Спасибо за ответ. Будет возможно установить компонент времени NSDate. Я могу получить объект NSDate, инициализированный для представления даты и времени. После этого можно будет изменить компонент времени.
 Daniel Dickison25 янв. 2011 г., 22:17
Используйте тот же календарь, чтобы превратить NSDate в NSDateComponents, затем установите время, затем используйте календарь, чтобы превратить его в NSDate.

вам нужно разделить NSDate с компонентами год, месяц и день, например,

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

Установите часы на 2

weekdayComponents.hour = 2;

А затем создать новую NSDate с помощью этих компонентов

NSDate *todayAt2 = [gregorian dateFromComponents:weekdayComponents];

Ваш ответ на вопрос