Mam straszny czas próbując zrobić coś, co powinno być łatwe. Mam wartość NSNumber 32025.89 sekund. Muszę to reprezentować w godzinach, minutach, sekundach. Czy istnieje metoda, która to wypluwa? Nie mogę znaleźć właściwego formatyzatora.NSNumber of seconds to Hours, minutes, seconds
Odpowiedz
Czy próbowałeś tworzenia NSDate
z tego i że drukowanie przy użyciu NSDateFormatter
?
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[theNumber doubleValue]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSLog(@"%@", [formatter stringFromDate:date]);
[formatter release];
Jeśli potrzebujesz poszczególne wartości na godziny, minuty i sekundy, użyj NSDateComponents
jak sugeruje Nall.
Powyższe nie wydrukuje prawidłowych kwot, jeśli NSNumber
reprezentuje więcej niż jeden dzień. Może to być 1 dzień i 1 godzina, a wydruk będzie drukowany tylko o 01:00:00. W takim przypadku należy ręcznie obliczyć godziny, minuty i sekundy.
To jest bardziej zgodne z tym, czego szukałem. Wiem, że mogę od matematyki, ale starałem się znaleźć sposób, który w zasadzie zrobił to dla mnie - NSDateFormatter było chyba, czego potrzebowałem. Dzięki. – SonnyBurnette
Używając tego kodu, miałem użytkownika, który dostał nieprawidłową wartość - zamiast 03:00 przez 180 sekund - otrzymali 33:00. Byli w strefie czasowej, która była 4,5 godziny do przodu i zastanawiałem się, czy pół godziny w ich strefie czasowej mogło spowodować to ... – petenelson
Jeśli nie chcesz po prostu podzielić, spróbuj tego. Może być wystarczająco blisko do twoich celów. Uwaga: Nie uwzględnia dokładności pod sekundę. (setSecond
ma 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]);
Oto sposób bez bibliotek wyjątkiem modf()
z 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;
Właśnie zauważyłem, że dzielisz 0 przez 3600, aby uzyskać godziny. To literówka, prawda? Chcesz powiedzieć "fsec/3600", prawda? – SonnyBurnette
A co ma z tym wspólnego 'frexp'? –
um ... wyodrębnia część ułamkową i część całkowitą liczby zmiennoprzecinkowej. W tym przypadku milisekundy i sekundy. –
NSNumber * valueForDisplay = [NSNumber numberWithDouble: [self valueForDisplay: clockName]];
NSNumber *totalDays = [NSNumber numberWithDouble:
([valueForDisplay doubleValue]/86400)];
NSNumber *totalHours = [NSNumber numberWithDouble:
(([valueForDisplay doubleValue]/3600) -
([totalDays intValue] * 24))];
NSNumber *totalMinutes = [NSNumber numberWithDouble:
(([valueForDisplay doubleValue]/60) -
([totalDays intValue] * 24 * 60) -
([totalHours intValue] * 60))];
NSNumber *totalSeconds = [NSNumber numberWithInt:
([valueForDisplay intValue] % 60)];
- 1. Jak przekonwertować milisekundy do czytelnej daty Minutes: Seconds Format?
- 2. Dodawanie Seconds to DateTime z poprawnym podwójnymi Wyniki w ArgumentOutOfRangeException
- 3. Większy niż> Mniejszy niż <w tym samym haśle javascript ... Błąd: Treść elementów musi składać się z dobrze utworzonych danych znakowych lub znacznika
- 4. Kiedy należy używać rekordu na krotce?
- 5. Swift obiekt convert to NSNumber Double
- 6. Python - Konwersja sekund od czasu epoki w czytelnej czasie
- 7. Swift: Konwertowanie NSNumber na NSString (NSNumber nie jest podtypem NSString)
- 8. Jak mogę wydrukować zmienną i ciąg znaków w tej samej linii w Pythonie?
- 9. Jak mogę wyświetlić czas z wiodącymi zerami?
- 10. Wyświetlanie czasu innego komputera na stronie internetowej przy użyciu Javascript?
- 11. argument isKindOfClass: [NSNumber class] - rozsądny sposób, aby to sprawdzić?
- 12. Executacript Minutnik w dniach, godzinach, minutach, sekundach
- 13. Wykrywanie to Div Out Of Screen
- 14. Laplacian of Gaussian: jak to działa? (OpenCV)
- 15. INSTEAD OF UPDATE Trigger - czy to możliwe?
- 16. Formatowanie minutnika z 00:00:00 nie działa. Wyświetla 00:00:00 do momentu zatrzymania, a następnie wyświetli pozostały czas
- 17. Co oznacza (+ var) oznacza
- 18. NSNumber z CGFloat
- 19. Najlepszy sposób na konwersję czasu militarnego na czas standardowy w javascript
- 20. NSNumber możliwy wyciek pamięci
- 21. Konwersja na numer NSNumber
- 22. Porównanie literałów NSNumber
- 23. Pomodoro Timer: Zmienna wartość idzie do "NaN"
- 24. Dopasowywanie godzin/minut/sekund w wyrażeniach regularnych - lepszy sposób?
- 25. Jak uzyskać regex dopasowaną grupę ceni
- 26. Jak sformatować przedziały czasu w kakao?
- 27. Jak naprawić błąd kompilatora C++ "nie można przekonwertować" Typ "na" const Type * ""?
- 28. Jak można uczłowieczyć ten całkowity czas trwania w chwili.js/javascript
- 29. Jak porównaj NSNumber w if
- 30. @ "" Literały typu ciągów dla NSNumber
Duplikat http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-nstimeinterval-into-year-months-days-hours-minutes-and. –