NSDateFormatter и yyyy-MM-dd

Я пытаюсь взять дату NSString в формате "2/22/11" и преобразовать ее в этот формат: 2011-02-22

Это мой код:

NSDate *dateTemp = [[NSDate alloc] init];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
dateTemp = [dateFormat dateFromString:newInvoice.date];
newInvoice.date = [dateFormat stringFromDate:dateTemp];

newInvoice.date начинается как NSString, равное "2/22/11". dateTemp заканчивается NIL. newInvoice.date также заканчивается NIL.

Я не могу для жизни понять, почему.

Ответ 1

Вы столкнулись с этой проблемой, потому что ваш формат даты неверен. Предположим, что ваш магазин newInvoice.date хранит "11:02:23", ваш dateFormatter должен быть @ "yy: MM: dd", и если ваша переменная newInvoice.date магазин "2/22/11", то ваша датаФормат должен быть @ "MM/dd/yy"

NSDate *dateTemp = [[NSDate alloc] init];
NSDateFormatter *dateFormat1 = [[NSDateFormatter alloc] init];
NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init];

[dateFormat1 setDateFormat:@"MM/dd/yy"];
[dateFormat2 setDateFormat:@"yyyy-MM-dd"];

dateTemp = [dateFormat1 dateFromString:newInvoice.date];
newInvoice.date = [dateFormat2 stringFromDate:dateTemp];

оба формата должны соответствовать вашему требованию, чтобы получить правильный результат

Ответ 2

Это должно работать нормально. Я установил стиль Date. Вы можете изменить NSDateFormatterShortStyle на что-то другое. Также проверьте формат newInvoice.date.

NSDate *dateTemp = [[NSDate alloc] init];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

[dateFormat setDateStyle: NSDateFormatterShortStyle];

dateTemp = [dateFormat dateFromString: newInvoice.date];

[dateFormat setDateFormat:@"yyyy-MM-dd"];

newInvoice.date = [dateFormat stringFromDate:dateTemp];