c – 从时钟,分钟,秒等组合chrono :: time_point的最优雅的方式

c – 从时钟,分钟,秒等组合chrono :: time_point的最优雅的方式,第1张

概述我有一个“人类可读”变量的小时,分​​钟,秒,日,月,年,其中包含与其名称相对应的值(假设我有< windows.h>)具有SYSTEMTIME结构. 我发现创建一个chrono :: time_point的唯一方法是: SYSTEMTIME sysTime = ...; // Came from some source (file, network, etc. )tm t;t.tm_sec 我有一个“人类可读”变量的小时,分​​钟,秒,日,月,年,其中包含与其名称相对应的值(假设我有< windows.h>)具有SYstemTIME结构.
我发现创建一个chrono :: time_point的唯一方法是:
SYstemTIME sysTime = ...; // Came from some source (file,network,etc. )tm t;t.tm_sec = sysTime.wSecond;t.tm_min = sysTime.wMinute;t.tm_hour = sysTime.wHour;t.tm_mday = sysTime.wDay;t.tm_mon = sysTime.wMonth - 1;t.tm_year = sysTime.wYear - 1900;t.tm_isdst = 0;std::chrono::system_clock::time_point dateTime =    std::chrono::system_clock::from_time_t( mktime( & t ) );

首先,我从SYstemTIME失去了一个毫秒.
第二,(mmm …)我不喜欢这种转换))

你能给出一个更优雅的方式来做这个问题吗?

解决方法 使用 this open source,header-only library,我可以:
#include "date.h"#include <iostream>struct SYstemTIME{    int wMilliseconds;    int wSecond;    int wMinute;    int wHour;    int wDay;    int wMonth;    int wYear;};intmain(){    SYstemTIME sysTime = {123,38,9,10,8,7,2015};    std::chrono::system_clock::time_point dateTime =        date::sys_days(date::year(sysTime.wYear)                      /date::month(sysTime.wMonth)                      /date::day(sysTime.wDay))        + std::chrono::hours(sysTime.wHour)        + std::chrono::minutes(sysTime.wMinute)        + std::chrono::seconds(sysTime.wSecond)        + std::chrono::milliseconds(sysTime.wMilliseconds);    std::cout << dateTime << '\n';}

其输出:

2015-07-08 10:09:38.123000

在“date.h”中,您可能必须使用这些宏来播放使用VS编译的东西:

#  define CONSTDATA const#  define CONSTCD11 #  define CONSTCD14

使用符合标准的C 14编译器,这些宏应设置为:

#  define CONSTDATA constexpr#  define CONSTCD11 constexpr #  define CONSTCD14 constexpr
总结

以上是内存溢出为你收集整理的c – 从时钟,分钟,秒等组合chrono :: time_point的最优雅的方式全部内容,希望文章能够帮你解决c – 从时钟,分钟,秒等组合chrono :: time_point的最优雅的方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存