2016-03-31 1 views
0

J'essaye d'analyser une chaîne d'horloge composée d'un nombre multiple de minutes et de la convertir en NSDate en utilisant un NSDateFormatter.Conversion des chiffres de plusieurs minutes (plus de 2) minutes en NSDate

Un exemple de la chaîne que j'essaye d'analyser est @"1234:56", où 1234 sont les minutes de l'horloge et 56 les secondes. J'ai essayé d'utiliser un format tel que @"mmmm:ss" mais il est retourné à zéro.

Au cas où c'est possible, quelqu'un peut-il m'aider avec ceci?

Merci

+2

il n'y a pas de format tel que "mmmm: ss" – Joshua

Répondre

1

Je ne suis pas sûr de la chose vous voulez faire, mais je suggère de faire quelque chose comme ça:

NSArray *timeArray = [@"1234:56" componentsSeparatedByString:@":"]; 
NSUInteger minutes = [[timeArray firstObject] integerValue]; 
NSUInteger seconds = [[timeArray lastObject] integerValue]; 

NSTimeInterval totalSeconds = minutes*60+seconds; 

Et puis vous devriez créer un nouvel objet de date et de travail avec ça.

NSDate *newDate = [NSDate dateWithTimeIntervalSince1970:totalSeconds]; 
+0

Thanks man. Je suppose que cela ne fait que prêter attention à l'heure (et en ignorant le jour, le mois et les années), je serai en mesure de l'analyser correctement. – CRoig

1

NSDateFormatter fonctionne uniquement avec le format de date légale et il n'y a pas de « mmmm'.You devrait obtenir ce jour par vous-même:

NSString *str = @"234:56"; 
NSArray<NSString *> *components = [str componentsSeparatedByString:@":"]; 
NSInteger minute = 0; 
NSInteger second = 0; 
switch (components.count) { 
    case 1: 
     second = components[0].integerValue; 
     break; 
    case 2: 
     second = components[0].integerValue; 
     minute = components[1].integerValue; 
     break; 

    default: 
     break; 
} 
// then convert to hours. 
0

essayer.

NSDate *currentDate = [NSDate date]; 
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate]; 
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"HH:mm:ss.SSS"]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; 
NSString *timeString=[dateFormatter stringFromDate:timerDate]; 
self.timerLabel.text = timeString; 
0

Si vous voulez convertir en HH: mm: ss alors mon approche sera quelque chose comme:

// assuming you wouldn't have any hours in the string and format will always be minutes:seconds 

NSArray *timeArray = [@"1234:56" componentsSeparatedByString:@":"]; 

//array's firstObject will be the "minutes/Hours" 
NSString *minutesAndHours = [timeArray firstObject]; 
int hours = [minutesAndHours intValue]/60; 
int minutes = [minutesAndHours intValue]%60; 
int seconds = [timeArray lastObject]; 

//create the format 

NSString *time = [NSString stringWithFormat:@"%d:%d:%d",hours,minutes,seconds]; 

//then use the time format 
NSString *time = [NSString stringWithFormat:@"%d:%d:%d",hours,minutes,seconds]; 
NSDateFormatter *format = [NSDateFormatter new]; 
[format setDateFormat:@"HH:mm:ss"]; 
NSDate *date = [format dateFromString:time]; 

quelque chose comme ça