Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Разница между датами в днях

#cpp


Вообщем, ввожу данные 1-й даты и 2-й даты и пытаюсь найти разницу между ними в днях,
решил для начала найти разницу в днях в месяцах и годах, месяцы и годы перевожу в дни
и все суммирую, но кол-во месяцев не подсчитывает 

#include 
#include 
using namespace std;
int main() 
{
int year_user, mon_user, day_user;
int current_year, current_mon, current_day;
int num_days, num_mon=0, num_years;
int leap_year = 0, leap_like = 0;
int m, m1, i, j;
int M[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
cout<<"Введите год месяц и день вашего дня рождения(в формате ГГГГ М Д):"<>year_user>>mon_user>>day_user;
cout<<"Ваша дата рождения:"<>current_year>>current_mon>>current_day;
cout<<"Желаемая дата:"<= current_mon)
{
    int m = mon_user;
    int m1 = current_mon; 
}
else
{
    int m = current_mon; 
    int m1 = mon_user;
}

//рассчитываем количество лишних месяцев    
for(i=m; i


Ответы

Ответ 1



Я бы не мучил эти дни, месяцы и годы... Есть такое хорошее понятие как юлианская дата с хорошо разработанным алгоритмом расчета, и ваша задача - просто вычисление разности двух таких дат. Если вы не планируете работать с датами до введения григорианского календаря и учитывать введение в России григорианского в 1918 году :), то вам достаточно запрограммировать это: Как видите, даже ни одного условного перехода :)

Ответ 2



Чтобы найти возраст в днях, можно готовую библиотеку использовать, к примеру, date.h для C++11/c++14: #include #include "date.h" int main() { using namespace date; sys_days birthday; if(!(std::cin >> parse("%Y %m %d", birthday))) return 1; // error sys_days today = floor(std::chrono::system_clock::now()); std::cout << (today - birthday).count() << std::endl; } Пример: $ g++ -std=c++14 -I/path/to/date *.cc $ echo 1982 6 25 | ./a.out 12864 Вот пример, который принимает во внимание время дня.

Комментариев нет:

Отправить комментарий