2016-03-31 1 views
-1

J'ai dateString avec ce format "mm/dd/yyyy '-' HH:mm". Je veux extraire la date en chaîne et l'heure en chaîne. J'ai essayé le code suivant, mais ce retour une mauvaise date:Date et heure d'extraction de NSDate - Objectif 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 chaîne: "05/01/2015 - 11:15"

Résultat: Date: 1/1/2015, temps: 11:15 et comment puis-je conserver ce format de date dd/mm/yyyy , je veux dire quand le jour est 1, il montre 01

+0

'MM' pour le mois, sinon sage c'est minutes (comme vous l'avez déjà utilisé). NSNumberFormatter peut utiliser le zéro de début si nécessaire. Ou vous pouvez simplement utiliser un 'NSDateFormatter' depuis la date que vous avez, au lieu d'utiliser' NSDateComponents': '[formatter setDateFormat: @" MM/jj/aaaa "]; dateLabel = [formatter stringFromDate: date]; [formatter setDateFormat: @ "HH: mm"]; hourLabel = [formatter stringFromDate: date]; 'Par le fait que' hourLabel'/'dateLabel' comme' NSString' et non 'UILabel' est un nom de variable var trompeur. – Larme

+0

Vous devriez utiliser 'NSDateFormatter' pour le faire. Mais pour votre intérêt, utilisez '[NSString stringWithFormat: @"% 02d ", [composants jour]]' ferait le travail pour vous, – zcui93

+0

Comment utiliser 'NSDateFormatter' pour obtenir chaque partie dans une chaîne –

Répondre

1

Non testé mais:

MM pour le mois. Pas mm qui est minutes.

Vous avez déjà un NSDateFormatter alors pourquoi ne pas l'utiliser à nouveau au lieu des formats NSDateComponents et 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 comme NSString et non UILabel est tout à fait une dénomination trompeuse var.