gpt4 book ai didi

ios - 以秒、分钟、小时为单位的耗时

转载 作者:行者123 更新时间:2023-11-28 22:03:13 27 4
gpt4 key购买 nike

我想在 UILabel 中显示耗时,如下所示:

 x sec | when the elapsed time is less than a minute compared to now 
y minutes | when the elapsed time is less than a hour, but greater than 60 sec compared to now
z hours | when the elapsed time is greater than 60 sec and 60 minutes, but less than 24 hours +1 seconds compared to now

我可以成功地捕捉到耗时,但我认为这是一种不同的格式,因为它以不同的方式计算秒和分钟。它像这样显示耗时:-9 分钟 -5 小时 -10 秒。为了使我的解决方案工作,我需要像这样的秒和分钟格式 -120 sec,如果是 2 分钟前或 -120 min,如果是 2 小时前, -48 小时,如果是两天前。

我认为这个解决方案可能没问题,但是我每次都显示错误的整数分钟或秒。如果有人能给我一些指导,我将不胜感激,我该如何解决分钟和第二个问题。但是,如果有人在过去做过类似的事情并且知道更好的方法(或者这是一种不好的方法),我也会尝试一下。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yy HH:mm:ss"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:self.fromDate];

NSTimeInterval timeInterval = [dateFromString timeIntervalSinceNow];

NSCalendar *deviceCalendar = [NSCalendar currentCalendar];


NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:timeInterval sinceDate:date1];

unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;


NSDateComponents *conversionInfo = [deviceCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];

NSLog(@" %d min %d hours %d seconds",[conversionInfo minute], [conversionInfo hour], [conversionInfo second]);

if ([conversionInfo second] < 60 || [conversionInfo minute] < 0 || [conversionInfo hour] < 0){

NSString *secondString = [NSString stringWithFormat:@"%d",[conversionInfo second]];
cell.time.text = secondString;

}

if ([conversionInfo second] > 60 || [conversionInfo minute] <= 60 || [conversionInfo hour] < 0){

NSString *minuteString = [NSString stringWithFormat:@"%d",[conversionInfo minute]];
cell.time.text = minuteString;

}

if ([conversionInfo second] > 60 || [conversionInfo minute] > 60 || [conversionInfo hour] >= 1){

NSString *hourString = [NSString stringWithFormat:@"%d",[conversionInfo hour]];
cell.time.text = hourString;

}

最佳答案

NSDateComponent 将始终将日期划分为这些组件。所以把它想象成你有日期 31.3.2014 15:08:12 然后 NSDateComponent 将交付给你:

 day: 31
month: 3
year: 2014
hours: 15
minutes:8
seconds:12

如果您有差异,这些值可能是负数,但是 [NSDateComponent second] 仍然只是时差的秒部分,而不是秒格式的整个时差。因此,如果我的时间差为 -4 分 -3 秒,[NSDateComponent second] 将为 -3,而 [NSDateComponent minute] 将为 -4。

因此,如果您想要自己对耗时的描述,您可以使用 NSDate 的 timeIntervalSince1970 方法并直接比较 UNIX 时间戳并计算所需的格式,或者您使用 NSDateComponent 并检查规则.. 所以如果没有小时但 x 分钟.. 你耗时(以秒为单位)是: numberOfMinutes * 60 + numberOfSeconds 其中 numberOfminutes 是你的 [NSDateComponent 分钟] 和 numberOfSeconds 是你的 [NSDateComponent second]

所以我建议您检查以下伪代码顺序:

if (days > 0) {
elapsed = hour + minutes/60 + seconds / 3600;
} else if (hour > 0) {
elapsed = hour*60 + minutes + seconds / 60;
} else if (minute>0) {

等等..

//免责声明:不保证所提供样本计算的正确性

关于ios - 以秒、分钟、小时为单位的耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com