[英]How to convert QString to std::chrono
我有一個任務來創建一個函數,它將時間對象(QString 類型)轉換為 std::chrono::milliseconds。 應該處理的格式是
QString("HH:MM:SS DD-MM-YYYY")
到std::chrono::milliseconds
我在這里Stack Overflow和谷歌的其他來源之前搜索了答案。 結果,我寫了這段代碼,而且它是正確的,但我完全困惑它是如何工作的。 問題是:
chronoUserTime - chronoEpochTime
而不是使用chronoUserTime
?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", "%Y-%m-%d %H:%M:%S", &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
s 之間的持續時間- 在您的情況下是自紀元以來的milliseconds
。
有什么方法可以直接執行此操作,例如 Qt 樣式
addDays
,setTime
是的,您可以向time_point
添加duration
:
my_time_point += my_duration;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.