0

我有一个传入的数据馈送,它给了我一个自午夜以来毫秒数的整数。

我想把它转换成某种时间对象,这样我就可以显示时间了。

例如,1000 = 00:00:01

有没有一种简单的方法可以做到这一点?我需要时间结构吗?

谢谢!

4

2 回答 2

1

您可以为此使用一个小助手结构,但这对于您的简单请求可能有点过分:

#include <iostream>
#include <iomanip>    

struct MidnightTime{
    MidnightTime(unsigned int miliseconds) : 
    seconds((miliseconds/1000) % 60), 
    minutes((miliseconds/60000) % 60),
    hours((miliseconds/3600000) % 24){}

    unsigned int seconds, minutes, hours;
};

std::ostream& operator<<(std::ostream& out, const MidnightTime& t){
    out << std::setfill('0') << std::setw(2) << t.hours << ":" <<
           std::setfill('0') << std::setw(2) << t.minutes << ":" << 
           std::setfill('0') << std::setw(2) << t.seconds;
    return out;
}

int main(){
    std::cout << MidnightTime(1000) << std::endl; // will result in 00:00:01
    return 0;
}
于 2012-07-11T20:59:06.103 回答
1
x = ms / 1000
seconds = x % 60
x /= 60
minutes = x % 60
x /= 60
hours = x % 24

然后你可以cout为你解析的时间。这仅适用于自午夜以来的持续时间。它不会显示日期。

于 2012-07-11T20:50:04.507 回答