如何将YYYY / MM / DD HH:MM:SS转换为std :: chrono :: system_clock :: time_point?

埃米尔·科米尔(Emile Cormier)

我正在从外部实时时钟芯片中获取YYYY / MM / DD HH:MM:SS组件。我想将其转换为a,std::chrono::system_clock::timepoint以便可以获取距大纪元以来的秒数,并更新操作系统的时间。

我想使用Howard Hinnant的建议日期库来执行此转换。

我会直观地做这样的事情:

date::year_month_day ymd = ...;
date::time_of_day tod = ...;
auto sysTime = date + tod;

但我没有看到适当的operator+重载。我想念什么吗?

这种转换的另一个用例是将日历日期和时间转换成std::chrono::timepoint我可以传递给boost :: asio :: steady_timer的日期和时间

霍华德·辛南特(Howard Hinnant)

通常,atime_of_day仅用于将持续时间格式化hh:mm:ss.fff为输出。但是有可能将其time_of_day转换为std::chrono::duration

auto tod = make_time(hours{17} + minutes{16} + seconds{45});  // time_of_day
auto d = seconds(tod);                                        // seconds

在C ++ 14中,我会使用更简洁的方法:17h + 16min + 45s,但是正如您所提到的,您在C ++ 11中,我将坚持使用C ++ 11代码。

year_month_day可以将A转换为sys_days

auto ymd = jul/29/2015;
auto dp = sys_days{ymd};

并且asys_days只是a而已,但其system_clock::time_point分辨率为days代替microsecondsnanoseconds

然后,您可以添加sys_daysduration并将其分配给system_clock::time_point放在一起:

#include "date.h"
#include <iostream>

int
main()
{
   using namespace date;
   using namespace std::chrono;
   auto ymd = jul/29/2015;
   auto tod = make_time(hours{17} + minutes{16} + seconds{45});
   system_clock::time_point tp =  sys_days(ymd) + seconds(tod);
}

在这个简化的示例中,无需经过time_of_day,而您可以只使用durations:

#include "date.h"
#include <iostream>

int
main()
{
   using namespace date;
   using namespace std::chrono;
   auto ymd = jul/29/2015;
   system_clock::time_point tp = sys_days(ymd)
                               + hours{17} + minutes{16} + seconds{45};
}

要记住的主要事情sys_days只是一个粗略的东西system_clock::time_point,当您从转换为时year_month_day,您就完全处于std::chrono系统中,并且可以从那里使用time_points和durations做任何您想做的事情

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将std :: chrono :: system_clock :: time_point转换为struct timeval并返回

如何从std :: chrono :: system_clock :: time_point.time_since_epoch()。count()中获取std :: chrono :: system_clock :: time_point?

将boost :: chrono :: steady_clock :: time_point转换为std :: chrono :: steady_clock :: time_point

如何将日期dd / mm / yyyy转换为yyyy-MM-dd HH:mm:ss Android

如何将日期从(ddmmyyyy HH:mm:ss)转换为(yyyy-MM-dd HH:mm:ss.SSS)?)

二进制'> =':'std :: chrono :: system_clock :: time_point'

如何将“ DD / MM / YYYY HH:MM:SS”转换为clojure inst值?

将时间从{yyyy-mm-dd hh:mm:ss}转换为{yyyy-mm-dd hh}

如何将 yyyy-MM-dd-hh.mm.ss 中的日期字段转换为 Hive 中的时间戳字段(yyyy-MM-dd hh:mm:ss))

如何将日期格式从yyyy-mm-dd hh:mm转换为mm / dd / yyyy

如何将 dd/mm/yyyy HHMM 批量转换为 dd/mm/yyyy HH:MM

如何将“ 20120111141311Z”转换为yyyy-mm-dd hh:mm:ss +/- hh:mm

日期从DD / MM / YYYY HH:MM:SS转换为YYYYMM

熊猫-将日期列从dd / mm / yy hh:mm:ss转换为yyyy-mm-dd hh:mm:ss

将字符串dd / mm / yyy转换为yyyy-mm-dd hh:mm:ss

我可以将 hh:mm 格式转换为 yyyy-MM-dd HH:mm:ss 吗?

如何将ISO日期和时间格式转换为“ DD Mon YYYY hh:mm:ss”?

Perl在Excel中将yyyy-mm-dd HH:mm:ss转换为yyyy-mm-dd

在SQL中将yyyy-mm-dd hh:mm:ss转换为yyyy-mm-dd

在 hive 中将时间格式从 'MM/dd/yyyy HH:mm:ss' 转换为 'MM-dd-yyyy'

如何使用 xslt 将“YYYY-MM-DD hh mm ss”转换为“YYYYMMDDhhmm”

将时间格式“dd/MM/yyyy hh:mm:ss”转换为“yyyy-MM-ddThh:mm:ss.SSSz”

如何将日期时间字符串转换为“ yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSZ”

Moment.js 如何将 MM/dd/yyyy HH:mm:ss.fff 转换为往返日期/时间模式?

如何将 nvarchar 字符串 mm/dd/yyyy hh:mm:ss 转换为日期时间?

如何将日期时间转换为Perl中的yyyy-mm-dd hh:mm:ss格式?

使用 std::chrono::from_stream() 解析時間格式“DD/MM/YYYY at hh:mm:ss”和其他格式

我想将日期从at:“ mm / dd / yyyy hh:mm”转换为“ yyyy-mm-dd hh:mm:ss”

如何在 C++ 中将 Windows FILETIME 转换为 std::chrono::time_point<std::chrono::file_clock>