有没有一种简单的方法来获取适用于 iOS、OSX、Linux 和 Windows 的一天中的时间(17:30、01:20...等)?
如果没有,是否有 Windows 方式和 posix 方式或其他方式?
谢谢
有没有一种简单的方法来获取适用于 iOS、OSX、Linux 和 Windows 的一天中的时间(17:30、01:20...等)?
如果没有,是否有 Windows 方式和 posix 方式或其他方式?
谢谢
time_t now = time(NULL);
您可以使用或检索时间time(&now);
然后,您通常使用 转换为当地时间struct tm *tm_now = localtime(&now);
。Astruct 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:格林威治标准时间 2011 年 12 月 28 日星期三 11:47:03
本地:2011 年 12 月 28 日星期三 06:47:03 EST
虽然std::put_time()
(from iomanip
) 尚未在 gcc 4.7.0 中实现。