是否有支持跨平台的C++ 方法来获取当前日期和时间?
发布于 2018-02-07 06:45:46
这个问题没有指定在哪个时区。有两种合理的可能性:
对于1,您可以使用此日期库和以下代码
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
std::cout << system_clock::now() << '\n';
}
输出结果是
2015-08-18 22:08:18.944211
实际上,日期库只是添加了一个流运算符。std::chrono::system_clock::time_point
它还增加了许多其他好用的功能,但在这个简单的程序中没有使用。
如果您需要2(当地时间),这有一个时区库和日期库,这两个库都是跨平台和开源的,这里假设编译器支持C++11或C++14。
#include "tz.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
auto local = make_zoned(current_zone(), system_clock::now());
std::cout << local << '\n';
}
输出
2015-08-18 18:08:18.944211 EDT
make_zoned
的返回结果类型是 date::zoned_time
,这是一对 date::time_zone
和 std::chrono::system_clock::time_point
他们表示本地时间,但是也可以表示 UTC 时间,这取决于你查询的方式。
有了上面的输出,您可以看到我的计算机目前处于一个UTC偏移量为 -4h,缩写为 EDT的时区。
如果需要其他时区,也可以完成。例如,要在澳大利亚悉尼找到当前时间,只需更改变量的结构。local
改为:
auto local = make_zoned("Australia/Sydney", system_clock::now());
输出变为
2015-08-19 08:08:18.944211 AEST
https://stackoverflow.com/questions/-100003460
复制相似问题