如何解决如何将QString转换为std :: chrono
我有一个任务来创建一个函数,该函数会将时间对象(QString类型)转换为std :: chrono ::毫秒。应当处理的格式为
QString("HH:MM:SS DD-MM-YYYY")
至std::chrono::milliseconds
我在Stack Overflow之前和Google的其他来源中搜索了答案。 结果,我编写了此代码及其正确的代码,但是我完全感到困惑。问题是:
- 为什么我必须减去
chronoUserTime - chronoEpochTime
而不是使用chronoUserTime
? - 是否有任何方法可以像Qt样式
addDays
,setTime
等以直接方式进行渗透?
const std::chrono::milliseconds &xml_order_base::converter(QString dateTime)
{
char *dateChar = const_cast<char*>(dateTime.toStdString().c_str());
std::tm ct;
strptime(dateChar,"%Y-%m-%d %H:%M:%S",&ct);
auto chronoUserTime = std::chrono::system_clock::from_time_t(std::mktime(&ct));
std::tm et;
strptime("1970-01-01 00:00:00",&et); //strptime("Thu Jan 1 1970 00:00:00","%a %b %d %Y %H:%M:%S",&et);
auto chronoEpochTime = std::chrono::system_clock::from_time_t(std::mktime(&et));
auto resultInMS = std::chrono::duration_cast<std::chrono::milliseconds>(chronoUserTime -
chronoEpochTime);
return resultInMS;
}
解决方法
为什么我必须减去
chronoUserTime - chronoEpochTime
而不是使用chronoUserTime
?
chronoUserTime
是一个时间点,time_point
。 milliseconds
是持续时间。时间点不是持续时间,反之亦然。为了将时间点转换为持续时间,您需要一个参考时间点,并且这里使用了通用纪元。
将一个time_point
减去另一个time_point
之间的持续时间 -在您的情况下,自时期以来就是milliseconds
。
有没有什么方法可以直接实现这种效果,例如Qt风格的
addDays
,setTime
是的,您可以将duration
添加到time_point
:
my_time_point += my_duration;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。