C++ 毫秒到可读格式?
我想将毫秒转换为人类可读的字符串 所以它看起来像1:59:23(1小时59分23秒) 我试过这个:C++ 毫秒到可读格式?,c++,C++,我想将毫秒转换为人类可读的字符串 所以它看起来像1:59:23(1小时59分23秒) 我试过这个: int hours = (metaData["duration"].toInt()/(1000 * 60 * 60)); int mins = (metaData["duration"].toInt()/(1000 * 60)); int seconds = (metaData["duration"].toInt()/1000); 但这只是给出了总数,也就是说,总的分钟数
int hours = (metaData["duration"].toInt()/(1000 * 60 * 60));
int mins = (metaData["duration"].toInt()/(1000 * 60));
int seconds = (metaData["duration"].toInt()/1000);
但这只是给出了总数,也就是说,总的分钟数和总的秒数,它没有考虑到60秒变成一分钟,所以不要把它包括在秒数中
有人有办法做到这一点吗
谢谢您需要使用模函数来提取有多少分和秒
int hours = (metaData["duration"].toInt()/(1000 * 60 * 60));
int mins = (metaData["duration"].toInt()/(1000 * 60)) % 60;
int seconds = (metaData["duration"].toInt()/1000) % 60;
模函数在除以某物时返回余数。因此,使用
%60
可以得到秒数,忽略完整的分钟数,同样忽略分钟数。只需稍微修改代码即可
int hours = (metaData["duration"].toInt()/(1000 * 60 * 60));
// 60 mins = 1 hour
int mins = (metaData["duration"].toInt()/(1000 * 60)) % 60;
// 60 secs = 1 min
int seconds = (metaData["duration"].toInt()/1000) % 60;
我使用以下代码,其中totalf保存毫秒值,输出类型为: 天。小时:分钟:秒。毫秒例如:12.23:59:59.123
unsigned int r,d,h,m,s,f;
r = abs(totalf);
d = r / 86400000;
r = r % 86400000;
h = r / 3600000;
r = r % 3600000;
m = r / 60000;
r = r % 60000;
s = r / 1000;
f = r % 1000;
char str[128];
if (totalf<0)
sprintf(str, "-%d.%02d:%02d:%02d.%03d", d, h, m, s, f);
else
sprintf(str, "%d.%02d:%02d:%02d.%03d", d, h, m, s, f);
无符号整数r,d,h,m,s,f;
r=绝对值(总F);
d=r/86400000;
r=r%86400000;
h=r/3600000;
r=r%3600000;
m=r/60000;
r=r%60000;
s=r/1000;
f=r%1000;
char-str[128];
如果(这个代码是C++的)什么是代码>元数据< /代码>?除了复杂的答案之外,为什么你不从分钟和秒数乘以分钟的时间乘以60分钟?