c – 从时钟,分钟,秒等组合chrono :: time_point的最优雅的方式
发布时间:2020-12-16 03:06:05 所属栏目:百科 来源:网络整理
导读:我有一个“人类可读”变量的小时,分??钟,秒,日,月,年,其中包含与其名称相对应的值(假设我有 windows.h)具有SYSTEMTIME结构. 我发现创建一个chrono :: time_point的唯一方法是: SYSTEMTIME sysTime = ...; // Came from some source (file,network,etc. )tm
我有一个“人类可读”变量的小时,分??钟,秒,日,月,年,其中包含与其名称相对应的值(假设我有<
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失去了一个毫秒. 你能给出一个更优雅的方式来做这个问题吗? 解决方法
使用
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; }; int main() { 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |