跨平台获取一天中的时间的方式

Cross Platform way to get the time of day?

本文关键字:时间 方式 获取 一天 跨平台      更新时间:2023-10-16

有没有一种简单的方法来获取一天中的时间(17:30,01:20...等),可以在iOS,OSX,Linux和Windows上运行?

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

谢谢

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

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

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

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

您可以使用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: 星期三 12

月 28 11:47:03 2011 GMT

当地时间:2011 年 12 月 28 日星期三 06:47:03 EST

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