私のプロジェクトではHowardHinnant dateライブラリを使用しています。私はnヶ月前に正確なdatetimeを取得したい。nヶ月前の正確な日時を探しますか?
例: "2016-12-17 18:21:26"は現在の日時であり、13ヶ月前の日時を知りたいです。出力する必要があります "2015-11-17 18:21:26"。
/*
* This function will return the current date in year_month_day format
*/
auto currentDate() {
auto currentTime = std::chrono::system_clock::now();
date::year_month_day currentDate = date::floor<date::days>(currentTime);
return currentDate;
}
/*
* This function will find the date before (n) months
*/
template <typename T>
auto oldDate(T monthsNum) {
auto currentDate = currentDate();
auto yearCurrentDate = (int)currentDate.year();
auto monthCurrentDate = currentDate.month();
auto dayCurrentDate = currentDate.day();
auto yearNum = monthsNum/12;
auto yearEndDate = yearCurrentDate - yearNum;
auto monthNum = monthsNum%12;
auto monthEndDate = monthCurrentDate;
while(monthNum) {
monthEndDate--;
}
if(monthEndDate > monthCurrentDate) {
yearEndDate--;
}
date::year_month_day endDate = date::year{yearEndDate}/monthEndDate;
return endDate;
}
My機能oldDate()
はn
ヶ月前だった日付を返します。しかし、私は時間を得ることができません。
をそのような日付などはありません場合はどう'2016-03-31 18:21:26'の1か月前? –
@ W.F。 :そのような場合、その月と年の最終日を返すべきです。しかし、私の機能は現在このケースを扱っていません。 – Shravan40