Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 毫秒到可读格式?_C++ - Fatal编程技术网

C++ 毫秒到可读格式?

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); 但这只是给出了总数,也就是说,总的分钟数

我想将毫秒转换为人类可读的字符串

所以它看起来像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);
但这只是给出了总数,也就是说,总的分钟数和总的秒数,它没有考虑到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分钟?