2010-07-17 3 views
1

Я пытаюсь установить некоторые компоненты сегодняшнего дня с NSDateComponent так:Как создать пользовательскую дату на iPhone

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setDay:1]; 
    [comps setHour:1]; 
    [comps setMinute:44]; 
    NSCalendar *cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
    NSDate *date = [cal dateByAddingComponents:comps toDate:[NSDate date] options:0]; 
    [comps release]; 
    NSLog(@"%@", date); 

Но этот пример будет ADD времени на текущую дату. Теперь я хочу сделать ADD один день, но установить час и минуту на указанные значения (без добавления). Как я могу это сделать?

ответ

2

Это работало в конце концов:

NSDateComponents *comp = [[NSCalendar currentCalendar] components:NSYearCalendarUnit 
NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]]; 
[comp setDay:[comp day] +1]; 
[comp setHour: 12]; 
[comp setMinute: 00]; 
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comp]; 
+0

Фактически, что я здесь делаю, ДОБАВИТЬ один день и установить время до 12:00 – sebrock

0

Easy: Просто используйте date свойство ...

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setDay:1]; 
[comps setHour:1]; 
[comps setMinute:44]; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [gregorian dateFromComponents:comps]; 

Edit: забыл календарь. Из руководства (1-я страница NSDateComponents в bold):

Важно: Объект NSDateComponents сам по себе не имеет смысла; вам нужно знать, в каком календаре оно интерпретируется, и вам нужно знать, являются ли значения абсолютными значениями единиц или количеством единиц.

Существует также пример того, как его использовать.

+0

Это дает нулевую спину. – sebrock

+0

Забыл о календаре ... отредактирован, чтобы исправить его. – Eiko

+0

Не проверено, но это, вероятно, будет работать. – sebrock

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