跨平台的方式来获取时间?

jma*_*erx 3 c c++ cross-platform

是否有一种简单的方法可以获得适用于iOS,OSX,Linux和Windows的时间(17:30,01:20 ......等)?

如果没有Windows方式和posix方式或东西?

谢谢

Jer*_*fin 8

您可以使用time_t now = time(NULL);或检索时间time(&now);

然后你通常转换为当地时间struct tm *tm_now = localtime(&now);.A struct tm包含年,月,日,星期,小时,分钟和秒的字段.如果要生成可打印输出,请strftime直接支持.

这两个都是C和C++标准,因此它们可以在大多数普通平台上使用.

如果你真的只关心C++,你可以使用std::put_time,这类似于strftime,但在将输出写入流的典型情况下使用起来有点简单.


Wal*_*ter 5

使用C++ 11可以使用

#include <iostream>
#include <iomanip>
#include <ctime>

int main()
{
    std::time_t t = std::time(nullptr);
    std::cout << "UTC:   " << std::put_time(std::gmtime(&t), "%c %Z") << '\n'
              << "local: " << std::put_time(std::localtime(&t), "%c %Z") << '\n';
}
Run Code Online (Sandbox Code Playgroud)

哪个应该产生(任何平台)

UTC:2011年12月28日星期三11:47:03 GMT

当地时间:Wed Dec 28 06:47:03美国东部时间

虽然std::put_time()(来自iomanip)尚未在gcc 4.7.0中实现.