Я использую Howard Hinnant's date library и пытаюсь найти общее количество месяцев между двумя датами.Как преобразовать 'std :: chrono :: duration <int, std :: ratio <2629746l, 1l>>' to 'int' type?
invalid static_cast from type ‘std::chrono::duration<int, std::ratio<2629746l, 1l> >’ to type ‘int’ int period = static_cast<int>(period_in_months(start_date, end_date));
Вот функции, которые я использую:
auto period_in_months(year_month_day start_date, year_month_day end_time) {
auto total_months = ((end_time.year() - start_date.year())*12 + (end_time.month() - start_date.month()));
return (total_months--);
}
double percentage_return(string risk_profile, year_month_day start_date, year_month_day end_date) {
int period = static_cast<int>(period_in_months(start_date, end_date));
// do something
}
Я попытался с помощью chrono::duration_cast<int>(period_in_months(start_date, end_date)
, но получил ту же ошибку.
И, как мы можем преобразовать 'delta' к int? – Shravan40
@ Shravan40: обновленный ответ с этой деталью. –
@ Shravan40: Если это помогает, вот видео-учебник только на хронологии: https://www.youtube.com/watch?v=P32hvk8b13M Полезно знать, как библиотека даты строит хронологию. –