私は自分を取り、NSTimeInterval
00:00:00(時、分、秒)の文字列にフォーマットしたいと思います。これを行うための最良の方法は何ですか?
21899 次
5 に答える
107
iOS 8.0以降NSDateComponentsFormatter
、メソッドを持つようになりましたstringFromTimeInterval:
。
[[NSDateComponentsFormatter new] stringFromTimeInterval:timeInterval];
于 2014-11-10T05:16:52.377 に答える
62
「最高」は主観です。最も簡単な方法は次のとおりです。
unsigned int seconds = (unsigned int)round(myTimeInterval);
NSString *string = [NSString stringWithFormat:@"%02u:%02u:%02u",
seconds / 3600, (seconds / 60) % 60, seconds % 60];
アップデート
iOS 8.0 および Mac OS X 10.10 (Yosemite) 以降ではNSDateComponentsFormatter
、ロケールに準拠したソリューションが必要な場合に使用できます。例:
NSTimeInterval interval = 1234.56;
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute |
NSCalendarUnitSecond;
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad;
NSString *string = [formatter stringFromTimeInterval:interval];
NSLog(@"%@", string);
// output: 0:20:34
ただし、強制的に 2 桁の時間を出力する方法がわかりません。そのため、それが重要な場合は、別のソリューションを使用する必要があります。
于 2011-11-14T21:18:06.620 に答える
27
NSTimeInterval interval = ...;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSString *formattedDate = [dateFormatter stringFromDate:date];
NSLog(@"hh:mm:ss %@", formattedDate);
于 2011-11-14T21:14:15.937 に答える
4
スウィフト4.2
extension Date {
static func timestampString(timeInterval: TimeInterval) -> String? {
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional
formatter.zeroFormattingBehavior = .pad
formatter.maximumUnitCount = 0
formatter.allowedUnits = [.hour, .minute, .second]
return formatter.string(from: timeInterval)
}
}
テストコード:
let hour = 60 * 50 * 32
Date.timestampString(timeInterval: TimeInterval(hour))
// output "26:40:00"
変更unitStyle
して異なるスタイルを取得します。のようformatter.unitsStyle = .abbreviated
に
出力:"26h 40m 0s"
于 2018-12-07T04:07:05.523 に答える
0
@Michael Frederickの回答のSwiftバージョン:
let duration: NSTimeInterval = ...
let durationDate = NSDate(timeIntervalSince1970: duration)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let durationString = dateFormatter.stringFromDate(durationDate)
于 2016-04-18T13:41:13.843 に答える