时间到毫秒又回来了

时间:2014-09-08 14:23:09

标签: ios macos cocoa cocoa-touch nsdate

假设我有时间 1:28.004 1分28秒)或 1:19:10.236 一小时十九分十秒),我如何使用NSDate或其他一些Cocoa类代表?然后,我将如何将其转换为毫秒?最后,一旦我将其转换为毫秒,我将如何将其转换回适当的时间格式,如上所述?

3小数精度非常重要,因为它与赛车运动的单圈时间有关。

2 个答案:

答案 0 :(得分:0)

您可以使用NSDate,首先计算时间间隔,使用它来设置NSDate(读取文档!),然后将日期格式化为UTC。当然,如果您设置日期格式,那么它将是您的纪元日期(1970年1月1日或2001年),但时间(仅限UTC!)将是正确的。

但简单的数学(除法和模除法)就差不多了。

答案 1 :(得分:0)

我设法使用NSDateNSDateFormatter的组合来解决这个问题。我想要一个比使用简单数学更优雅( IMO )的解决方案。

// Set up the date formatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"HH:mm:ss.SSS";
// Translate the time into an instance of NSDate
NSDate *date = [formatter dateFromString:@"00:01:28.004"];
// Get the time in seconds; includes 3 decimal place precision
NSTimeInterval seconds = [date timeIntervalSince1970];
// <Do what ever with the seconds here>
// Convert seconds back to an instance of NSDate
NSDate *dateFromSeconds = [NSDate dateWithTimeIntervalSince1970:seconds];
// Get the human readable version in the proper HH:mm:ss.SSS format, for display
NSString *timeToDisplay = [formatter stringFromDate:dateFromSeconds]);

这一切都很有效,并且符合预期。