簡単にできるはずのことをしようとして、ひどい時間を過ごしています。NSNumber の値は 32025.89 秒です。それを時、分、秒で表す必要があります。それを吐き出す方法はありますか?適切なフォーマッタが見つからないようです。
13911 次
4 に答える
9
分割したくない場合は、これを試してください。あなたの目的には十分近いかもしれません。注: 1 秒未満の精度は考慮されていません。(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]);
于 2009-10-07T00:32:03.697 に答える
9
それから を作成し、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 日と 1 時間の場合、01:00:00 のみが出力されます。このような場合は、時、分、秒を手動で計算する必要があります。
于 2009-10-07T00:37:50.053 に答える
4
modf()
from以外のライブラリを使用しない方法は次の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;
于 2009-10-07T00:38:23.073 に答える
2
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)];
于 2012-04-18T19:28:02.100 に答える