我在我的項目中使用了HowardHinnant date庫。我想在n個月之前得到確切的日期。查找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;
}
我的功能oldDate()
將返回這是n
個月之前的日期。但我無法獲得時間。
如果沒有這樣的日期如'2016-03-31 18:21:26'前一個月? –
@ W.F。 :在這種情況下,它應該返回該月份和年份的最後日期。但是我的功能目前沒有處理這種情況。 – Shravan40