2016-03-31 5 views
-1

У меня dateString с этим форматом "mm/dd/yyyy '-' HH:mm". Я хочу извлечь дату в строке и в строке в строке. Я пробовал следующий код, но это возвращает неправильную дату:Дата и час извлечения из NSDate - Цель C

- (void) extractDate: (NSString *)dateString intoHour: (NSString *)hourLabel and: (NSString*)dateLabel { 
    NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; 
    [formatter setDateFormat:@"mm/dd/yyyy '-' HH:mm"]; 
    NSData *date = [formatter dateFromString:dateString]; 

    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:date]; 

    hourLabel = [NSString stringWithFormat:@"%lu:%lu", [components hour], [components minute]]; 
    dateLabel = [NSString stringWithFormat:@"%lu/%lu/%lu", [components day], [components month], [components year]]; 
} 

Exemple Строка: "05/01/2015 - 11:15"

Результат: Дата: 1/1/2015, время: 11:15 , а также, как я могу поддерживать этот формат даты dd/mm/yyyy Я имею в виду, когда день 1, он показывает 01

+0

'ММ' за месяц, иначе мудрый это минуты (как вы уже использовали его). NSNumberFormatter может использовать при необходимости ноль. Или вы можете просто использовать 'NSDateFormatter' с даты, которую вы получили, вместо использования' NSDateComponents': '[formatter setDateFormat: @" MM/dd/yyyy "]; dateLabel = [formatter stringFromDate: date]; [formatter setDateFormat: @ "HH: mm"]; hourLabel = [formatter stringFromDate: date]; 'Кстати,' hourLabel'/'dateLabel' как' NSString', а не 'UILabel' - довольно вводящее в заблуждение имя var. – Larme

+0

Чтобы сделать это, вы должны использовать 'NSDateFormatter'. Но для вашего интереса используйте '[NSString stringWithFormat: @"% 02d ", [components day]]' выполнит задание для вас, – zcui93

+0

Как использовать 'NSDateFormatter' для получения каждой части строки –

ответ

1

не проверял, но:

MM за месяц. Не mm, что составляет минуты.

У вас уже есть NSDateFormatter, так почему бы не использовать его вместо NSDateComponents и NSString?

NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 
[formatter setDateFormat:@"MM/dd/yyyy '-' HH:mm"]; 
NSDate *date = [formatter dateFromString:dateString]; 

//Now you have the correct date. So we'll use the NSDateFormatter to transform NSDate (date) into NSString according to the format we need. 

[formatter setDateFormat:@"MM/dd/yyyy"]; 
dateLabel = [formatter stringFromDate:date]; 
[formatter setDateFormat:@"HH:mm"]; 
hourLabel = [formatter stringFromDate:date]; 

hourLabel/dateLabel в NSString и не UILabel вполне в заблуждение вар именование.