Как получить дату из дня года в iPhone?

Как получить дату из дня года? например, если я укажу день как «1», тогда дата должна быть «1 января»

Как я могу получить это в iPhone? Я нашел ответ в javascript, но я хочу знать, как сделать то же самое в цели?


person Bharath    schedule 01.08.2012    source источник


Ответы (2)


arrow_upward
2
arrow_downward

Я думаю, этот код вам подойдет: я создал пример функции, в которой текстовое поле дает входные значения, сколько дней нужно добавить. И кнопка для расчета последнего дня. Вот логика события кнопки.

  NSDateComponents *dateComponent = [[NSDateComponents alloc] init];
  NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  [formatter setDateFormat:@"yyyy-mm-dd"];

  NSDate *newDate =  [formatter dateFromString:@"2012-01-01"];

  // add days to current date
  dateComponent.day = [dayTextField.text intValue];

  // get a new date by adding components
  newDate = [[NSCalendar currentCalendar] dateByAddingComponents: dateComponent toDate:newDate options:0];

  [finalDate setText:[NSString stringWithFormat:@"%@", newDate]];

Здесь dayTextField.text — это текст, в котором указано, сколько дней нужно рассчитать. (Например, 125 дней), а finalDate — это метка, отображающая окончательную сгенерированную дату (означает дату через 125 дней после 1 января 2012 г.).

Преимущество этого кода в том, что в любое время вы можете изменить параметр дня начала. Например, для другого требования мне нужно считать свои дни с «31 мая 1999 года», тогда я легко изменю его в одной строке, и тот же код будет работать.

Наслаждайтесь кодированием :)

person Mrunal    schedule 01.08.2012

arrow_upward
1
arrow_downward

NSCalendar *gregorian =
   [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger dayOfYear =
   [gregorian ordinalityOfUnit:NSDayCalendarUnit
    inUnit:NSYearCalendarUnit forDate:[NSDate date]];
[gregorian release];
return dayOfYear;

Возьмите из сообщения: target-c">Как вы вычисляете день года для определенной даты в Objective-C?

person talbright    schedule 01.08.2012
comment
Если вы найдете другой идентичный вопрос SO, нужно пометить этот вопрос как дубликат. :) - person Almo; 01.08.2012
comment
И этот ответ является полной противоположностью тому, о чем спрашивал вопрос. И цикл завершен - person WDUK; 27.11.2012