首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中获取当前时间和日期?

如何在C++中获取当前时间和日期?
EN

Stack Overflow用户
提问于 2018-02-07 00:05:48
回答 10查看 0关注 0票数 0

是否有支持跨平台的C++ 方法来获取当前日期和时间?

EN

Stack Overflow用户

发布于 2018-02-07 06:45:46

这个问题没有指定在哪个时区。有两种合理的可能性:

  1. UTC 时间
  2. 计算机本地时区

对于1,您可以使用此日期库和以下代码

代码语言:javascript
复制
#include "date.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    std::cout << system_clock::now() << '\n';
}

输出结果是

代码语言:javascript
复制
2015-08-18 22:08:18.944211

实际上,日期库只是添加了一个流运算符。std::chrono::system_clock::time_point它还增加了许多其他好用的功能,但在这个简单的程序中没有使用。

如果您需要2(当地时间),这有一个时区库日期库,这两个库都是跨平台和开源的,这里假设编译器支持C++11或C++14。

代码语言:javascript
复制
#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';
}

输出

代码语言:javascript
复制
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改为:

代码语言:javascript
复制
auto local = make_zoned("Australia/Sydney", system_clock::now());

输出变为

代码语言:javascript
复制
2015-08-19 08:08:18.944211 AEST
票数 0
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档