Как я могу изменить NSDateFormatter на «ДД / ММ / ГГГГ»? - PullRequest
2 голосов
/ 19 сентября 2011

Я попытался поставить это:

 EKEventStore *eventStore = [[EKEventStore alloc] init];

 EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
 event.title = [NSString stringWithFormat:@"DHSB Assignment: %@", Assignment1.text];

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 [formatter setDateFormat:@"M/d"];
 event.startDate = [formatter dateFromString:dateField.text];

 NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
 [formatter2 setDateFormat:@"M/d"];
 event.endDate = [formatter2 dateFromString:dateField.text];

 [event setCalendar:[eventStore defaultCalendarForNewEvents]];
 [eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
 [EKEventStore release];

 NSLog(@"Successfully added '%@' to the calendar", Assignment1.text);

... но событие не будет добавлено в календарь, если я введу дату в формате "ДД / ММ / ГГГГ".

Почему это?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 19 сентября 2011

Я думаю, правильный формат должен быть:

[formatter setDateFormat:@"dd/MM/yyyy"];

Попробуйте добавить NSLog в метод dateFromString, чтобы убедиться, что вы получаете правильный результат

РЕДАКТИРОВАТЬ: вам также может потребоваться установить правильный языковой стандарт для даты в соответствии с вашими потребностями.

1 голос
/ 19 сентября 2011

Я думаю, что ваша строка формата неверна:

@"dd/MM/yyyy";

Может дать лучшие результаты.

Кстати - какой смысл передавать указатель NSError * на функцию ине проверяет возвращаемое значение или ошибку.Попробуйте заменить эту строку:

[eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 

на что-то вроде этого:

BOOL success = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];

if (!success) {
    NSLog(@"Cannot save event. %@", [err localizedDescription];
}

Не идеальная проверка ошибок, но она даст вам некоторое представление о том, что происходит во время разработки.

...