преобразовать строку в NSDate - PullRequest
1 голос
/ 23 мая 2011

У меня есть «DateTimeArray», этот массив содержит

DateTimeArray[index 0] = 20.05.2011 12:12:50    
DateTimeArray[index 1]=  20.05.2011 12:13:20   
DateTimeArray[index 2]=  20.05.2011 12:20:10  

все значения в строке, и я хочу преобразовать эту строку в NSDate и только хочу получить доступ ко времени, а не к дате
, а затемна этот раз значения будут храниться в массиве, и этот новый массив будет использоваться для рисования линейной диаграммы

Я надеюсь, что кто-то знает эту проблему

большое спасибо

Ответы [ 6 ]

1 голос
/ 23 мая 2011
    NSMutableArray *nsdateArray = [NSMutableArray arrayWithCapacity:[DateTimeArray count]];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd.MM.yyyy HH:mm:ss"];

    for(NSString *currentString in DateTimeArray){
        NSDate *date = [dateFormat dateFromString:currentString];
        [nsdateArray addObject:date];
    }
    [dateFormat release];
    NSLog(@"ArrayWithDate:%@",[nsdateArray description]);
1 голос
/ 23 мая 2011

Лучший и более чистый подход:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd.MM.yyyy HH:mm:ss"];

for(int i=0; i < [DateTimeArray count]; ++i)
{
   NSString *string = [DateTimeArray objectAtIndex:i];
   NSDate *date = [df dateFromString:string];
   [timeArray addObject:time];
}

[df release]; // ALWAYS release unused objects

Затем, чтобы получить доступ только к часам, а не дням, вы должны выбрать необходимые компоненты для каждого NSDate* экземпляра:

// Get the Gregorian calendar
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

// Get the date
NSDate* date = [timeArray objectAtIndex:my_index];

// Get the hours, minutes, seconds
NSDateComponents* hour = [cal components:NSHourCalendarUnit fromDate:date];
NSDateComponents* minute = [cal components:NSMinuteCalendarUnit fromDate:date];
NSDateComponents* second = [cal components:NSSecondCalendarUnit fromDate:date];
1 голос
/ 23 мая 2011

Код следующий,

for(int index=0;index<[DateTimeArray count];index++)
{
   NSDateFormatter *df = [[NSDateFormatter alloc] init];
   [df setDateFormat:@"HH:mm:ss"];
   NSString *timeString=[[[DateTimeArray objectAtIndex:index]componentsSeparatedByString:@" "]objectAtIndex:1];
   NSDate *time=[df dateFromString:timeString];
   [timeArray addObject:time];
   [df release];
}
1 голос
/ 23 мая 2011

Попробуйте это

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss"];
NSDate *formattedDate = [df dateFromString:[DateTimeArray objectAtIndex:requiredIndex]];
[df release];
0 голосов
/ 23 мая 2011
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"]
NSString *theTime = [timeFormat dateFromString:date];
or
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];
0 голосов
/ 23 мая 2011

Вот полный набор кода .. Надеюсь, это поможет ..

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
int i=0;//start for{} loop
NSString *currDate = [formatter dateFromString:[DateTimeArray objectAtIndex:i]];
[formatter release];

Счастливого iCoding ...

...