NSNumber секунд к Часам, минутам, секундам

Продолжение из превосходного ответа Mercator...

я рекомендовал бы:

  1. Выезд все файлы (я предполагаю использование VSS для приложения VB6)
  2. Делают восстанавливание всей Перепроверки группы
  3. проекта назад в VSS

Теперь базируется, Вы - реальные различия, а не 'автоматические' изменения, которые VB6 попыталась применить.

6
задан SonnyBurnette 7 October 2009 в 00:11
поделиться

3 ответа

Вы пытались создать NSDate из этого и распечатать его с помощью NSDateFormatter ?

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[theNumber doubleValue]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSLog(@"%@", [formatter stringFromDate:date]); 
[formatter release];

Если вам нужны отдельные значения для часов, минут и секунды, используйте NSDateComponents , как было предложено nall.

Вышеупомянутое не будет печатать правильные суммы, если NSNumber представляет более одного дня. Это может быть 1 день и 1 час, и он будет печатать только 01:00:00. В таком случае вам следует рассчитать часы, минуты и секунды вручную.

9
ответ дан 8 December 2019 в 04:53
поделиться

Вот способ без каких-либо библиотек, кроме modf () из math.h :

float fsec = 32025.89f, frac = 0;
int milliseconds = (int)(modf(fsec, &frac) * 1000);
int isec = (int)frac;
int hours = isec / 3600;
int minutes = (isec % 3600) / 60;
int seconds = isec % 60;
4
ответ дан 8 December 2019 в 04:53
поделиться

Если вы не хотите просто разделить его, попробуйте следующее. Это может быть достаточно близко для ваших целей. Примечание: Он не учитывает точность до долей секунды. ( setSecond принимает NSInteger ).

NSDateComponents* c = [[[NSDateComponents alloc] init] autorelease];
[c setSecond:32025.89];

NSCalendar* cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]
                   autorelease];

NSDate* d = [cal dateFromComponents:c];

NSDateComponents* result = [cal components:NSHourCalendarUnit |
                                           NSMinuteCalendarUnit |
                                           NSSecondCalendarUnit
                                  fromDate:d];

NSLog(@"%d hours, %d minutes, %d seconds",
    [result hour], [result minute], [result second]);
9
ответ дан 8 December 2019 в 04:53
поделиться