3

有没有一种简单的方法来获取适用于 iOS、OSX、Linux 和 Windows 的一天中的时间(17:30、01:20...等)?

如果没有,是否有 Windows 方式和 posix 方式或其他方式?

谢谢

4

2 回答 2

8

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

然后,您通常使用 转换为当地时间struct tm *tm_now = localtime(&now);。Astruct tm包含年、月、日、星期几、小时、分钟和秒的字段。如果你想产生可打印的输出,strftime直接支持。

这两者都在 C 和 C++ 标准中,因此它们在大多数普通平台上都可用。

如果你真的只关心 C++,你可以使用std::put_time,它类似于strftime,但对于将输出写入流的典型情况使用起来更简单一些。

于 2012-06-19T05:02:51.947 回答
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';
}

应该在(任何平台)上产生

UTC:格林威治标准时间 2011 年 12 月 28 日星期三 11:47:03

本地:2011 年 12 月 28 日星期三 06:47:03 EST

虽然std::put_time()(from iomanip) 尚未在 gcc 4.7.0 中实现。

于 2012-06-19T08:16:42.147 回答