首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将秒转换为小时、分钟和秒

将秒转换为小时、分钟和秒
EN

Stack Overflow用户
提问于 2013-12-07 21:41:23
回答 3查看 755关注 0票数 0

我正在做一个秒表应用程序。我正在计算自应用程序处于后台以来所经过的时间,这样当应用程序返回到前台时,我可以将其添加到秒表时间中。我有这个代码,当一个NSNotification被发送到我的StopwatchViewController时,它会被调用,它的运行时间以秒为单位。我正在尝试将秒转换为小时、分钟和秒:

代码语言:javascript
复制
-(void)newMessageReceived:(NSNotification *) notification
{

    elapsedTime = [[notification object] intValue];

    elapsedHours = elapsedTime / 3600;
    elapsedTime = elapsedTime - (elapsedTime % 3600);

    elapsedMinutes = elapsedTime / 60;
    elapsedTime =  elapsedTime - (elapsedTime % 60);

    elapsedSeconds = elapsedTime;

    secondInt = secondInt + elapsedSeconds;
    if (secondInt > 59) {
        ++minuteInt;
        secondInt -= 60;
    }

    minuteInt = minuteInt + elapsedMinutes;
    if (minuteInt > 59) {
        ++hourInt;
        minuteInt -= 60;
    }

    hourInt = hourInt + elapsedHours;
    if (hourInt > 23) {
        hourInt = 0;
    }
} 

通知对象被分配给elapsedTime,但仅此而已;elapsedTime小时/分钟/秒都保持为0,而elapsedTime保持不变。为什么它不起作用?

EN

回答 3

Stack Overflow用户

发布于 2013-12-07 21:50:26

这种方法似乎过于复杂且容易出错。

为什么不记录开始时间(如NSTimeInterval或NSDate),然后从当前时间减去它,得到经过的秒数?

票数 2
EN

Stack Overflow用户

发布于 2013-12-07 21:45:47

您正在从elapsedTime中减去错误的部分。你应该减去小时数,而不是余数:

代码语言:javascript
复制
elapsedTime = elapsedTime - (elapsedTime / 3600) * 3600;

或者你可以使用等价的计算方法:

代码语言:javascript
复制
elapsedTime = elapsedTime % 3600;
票数 1
EN

Stack Overflow用户

发布于 2020-09-28 19:17:40

使用类型转换float到int将秒转换为h

代码语言:javascript
复制
seconds = 111222333  # example 

h = (seconds/60/60) 
m = (h-int(h))*60
s = (m - int(m))*60

检查结果

代码语言:javascript
复制
print(f'{h:.0f} {m:.0f} {s:.0f}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20442026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档