2017-01-19 5 views
0

Я пытаюсь отформатировать дату, используя NSDateFormatter, однако для некоторых дат, отформатированных таким же образом, он возвращает время без первой цифры, а для других - null.NSDateFormatter, возвращающее нулевое значение

NSDateFormatter *dateFormat = [NSDateFormatter new]; 
[dateFormat setDateFormat:@"EEEE dd/MM/yyyy HH:mm"]; 
dateFormat.locale = [NSLocale localeWithLocaleIdentifier:@"en_AU"]; 
NSDate *startDate = [dateFormat dateFromString:startString]; 
NSDate *endDate = [dateFormat dateFromString:endString]; 

Эта дата: "Суббота 1/21/2017 17:00" вернется (нуль)

Эта дата: "В четверг 2/9/2017 14:00" вернется 2017-09- 02 04:00:00 +0000

Эта дата: "четверг 2/9/2017 20:30" вернется 2017-09-02 10:30:00 +0000

Может кто-нибудь пролить некоторый свет на где я ошибаюсь. Thanks

+4

«dd/MM»: ДЕНЬ/МЕСЯЦ, но «1/21 /», ясно МЕСЯЦ/ДЕНЬ, поскольку 21-й месяц ... И в Австралии для восточной части у вас есть -10 по GMT. поэтому он удаляет 10 часов. – Larme

+0

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

ответ

1

EEEE dd/MM/yyyy HH:mm до EEEE MM/dd/yyyy HH:mm. Просто небольшая ошибка, в которой меняются дни и месяцы. Потому что, очевидно, «Суббота 1/21/2017 17:00» означает 21 января, потому что 21-го месяца в году не существует (по крайней мере, не здесь).

Для 10-часовой разницы это связано с часовыми поясами. В en_AU (на восточном побережье, я думаю), есть разница в 10h от GMT.

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