当前位置:   iOS > 正文

使用chrono :: time_point获取当前小时数和分钟数

c++,c++11,chrono,ios,git,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我一直试图找到一个使用std :: chrono的例子,它只是得到一个chrono::time_point并提取小时数和分钟数作为整数.

我有:

std::chrono::system_clock::time_point now = std::chrono::system_clock::now();

但我无法找出如何提取小时和分钟(从午夜开始)?我正在寻找类似的东西:

int hours = now.clock.hours();

Howard Hinna.. 6

这是一个免费的开源日期库,可以为您完成此任务.如果您想知道它是如何完成的,请随意检查代码.您可以使用它来获取UTC时区午夜以来的当前小时和分钟,如下所示:

#include "date/date.h"
#include 
#include 

int
main()
{
    auto now = date::floor(std::chrono::system_clock::now());
    auto dp = date::floor(now);
    auto time = date::make_time(now - dp);
    int hours = time.hours().count();
    int minutes = time.minutes().count();
    std::cout.fill('0');
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n';
}

如果您需要其他时区的信息,则需要使用此额外的IANA时区解析器(或者您可以编写自己的时区管理系统).上面的代码会像这样修改,以获得当地时区午夜以来的小时和分钟:

#include "date/tz.h"
#include 
#include 

int
main()
{
    auto zt = date::make_zoned(date::current_zone(),
                               std::chrono::system_clock::now());
    auto now = date::floor(zt.get_local_time());
    auto dp = date::floor(now);
    auto time = date::make_time(now - dp);
    int hours = time.hours().count();
    int minutes = time.minutes().count();
    std::cout.fill('0');
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n';
}

这些库可以在github上找到:

https://github.com/HowardHinnant/date

以下是日期库的视频演示:

https://www.youtube.com/watch?v=tzyGjOm8AKo

以下是时区库的视频演示:

https://www.youtube.com/watch?v=Vwd3pduVGKY



1> Howard Hinna..:

这是一个免费的开源日期库,可以为您完成此任务.如果您想知道它是如何完成的,请随意检查代码.您可以使用它来获取UTC时区午夜以来的当前小时和分钟,如下所示:

#include "date/date.h"
#include 
#include 

int
main()
{
    auto now = date::floor(std::chrono::system_clock::now());
    auto dp = date::floor(now);
    auto time = date::make_time(now - dp);
    int hours = time.hours().count();
    int minutes = time.minutes().count();
    std::cout.fill('0');
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n';
}

如果您需要其他时区的信息,则需要使用此额外的IANA时区解析器(或者您可以编写自己的时区管理系统).上面的代码会像这样修改,以获得当地时区午夜以来的小时和分钟:

#include "date/tz.h"
#include 
#include 

int
main()
{
    auto zt = date::make_zoned(date::current_zone(),
                               std::chrono::system_clock::now());
    auto now = date::floor(zt.get_local_time());
    auto dp = date::floor(now);
    auto time = date::make_time(now - dp);
    int hours = time.hours().count();
    int minutes = time.minutes().count();
    std::cout.fill('0');
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n';
}

这些库可以在github上找到:

https://github.com/HowardHinnant/date

以下是日期库的视频演示:

https://www.youtube.com/watch?v=tzyGjOm8AKo

以下是时区库的视频演示:

https://www.youtube.com/watch?v=Vwd3pduVGKY

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8749
推荐阅读
相关标签
  

闽ICP备14008679号