разница между двумя датами
Автор Ёаша Denfer задал вопрос в разделе Другие языки и технологии
как получить разницу между двумя датами в днях C++. напишите пример и получил лучший ответ
Ответ от Николай Веселуха[гуру]
// _69828855
#include <iostream>
#include <ctime>
#define DAY 86400
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int begDay, begMonth, begYear;
int endDay, endMonth, endYear;
time_t time1, time2, daysDifference;
cout << "
Введите начальное число: "; cin >> begDay;
cout << " Введите начальный месяц: "; cin >> begMonth;
cout << " Введите начальный год: "; cin >> begYear;
tm dateBeg = {0, 0, 0, begDay, begMonth - 1, begYear - 1900, 0, 0, 0};
cout << "
Введите конечное число: "; cin >> endDay;
cout << " Введите конечный месяц: "; cin >> endMonth;
cout << " Введите конечный год: "; cin >> endYear;
tm dateEnd = {0, 0, 0, endDay, endMonth - 1, endYear - 1900, 0, 0, 0};
time1 = mktime(&dateBeg);
time2 = mktime(&dateEnd);
daysDifference = ((time1 > time2) ? time1 - time2 : time2 - time1) / DAY;
cout << "
Разница в днях равна: " << daysDifference;
cin.get(); cin.get();
return 0;
}
Либо в развёрнутом варианте... .
// _69828855
#include <iostream>
#include <ctime>
#define DAY 86400
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int begDay, begMonth, begYear;
int endDay, endMonth, endYear;
struct tm dateBeg, dateEnd;
time_t time1, time2, daysDifference;
cout << "
Введите начальное число: "; cin >> begDay;
cout << " Введите начальный месяц: "; cin >> begMonth;
cout << " Введите начальный год: "; cin >> begYear;
dateBeg.tm_sec = 0;
dateBeg.tm_min = 0;
dateBeg.tm_hour = 0;
dateBeg.tm_mday = begDay;
dateBeg.tm_mon = begMonth - 1;
dateBeg.tm_year = begYear - 1900;
dateBeg.tm_wday = 0;
dateBeg.tm_yday = 0;
dateBeg.tm_isdst = 0;
cout << "
Введите конечное число: "; cin >> endDay;
cout << " Введите конечный месяц: "; cin >> endMonth;
cout << " Введите конечный год: "; cin >> endYear;
dateEnd.tm_sec = 0;
dateEnd.tm_min = 0;
dateEnd.tm_hour = 0;
dateEnd.tm_mday = endDay;
dateEnd.tm_mon = endMonth - 1;
dateEnd.tm_year = endYear - 1900;
dateEnd.tm_wday = 0;
dateEnd.tm_yday = 0;
dateEnd.tm_isdst = 0;
time1 = mktime(&dateBeg);
time2 = mktime(&dateEnd);
daysDifference = ((time1 > time2) ? time1 - time2 : time2 - time1) / DAY;
cout << "
Разница в днях равна: " << daysDifference;
cin.get(); cin.get();
return 0;
}
в версии от borland есть функции работы со временем Tdatetime если не ошибаюсь, а вот в версии от microsoft тоже сталкивался с такой проблемой, сам писал функцию, только мне требовалось сравнить две даты, ну думаю получить разницу тоже не составит труда. алгоритм примерно следующий: можно завести структуру работать с ней на порядок проще. но можно обойтись и переменными только их будет много. объявляем 6 переменных (3 переменные для одной даты и 3 для другой) для даты, и 3для подсчета разницы ну и считаем
разница1=(число1 - число2);
разница2=(месяц1-месяц2);
разница3=(год1-год2);
ну и выводим ("разница состовляет"+разница1+"дней"...и т. д. )
ну это так скажем деревянным способом, можно еще написать функции для вывода коректных окончаний например 3дня, 30дней и т. д. .так же учитывать высокосный год, округлять до дней и т. д. Это в принципе просто, я за чисто символические 100WMR сделаю все подробно. пиши в агент если что
Как посчитать разницу между двумя датами в PHP?
" и перевести обратно в дни, месяцы и годы не предлагать - не работает"
а в чем вам разница
подробнее...
Игра ЛИНЕЙДЖ 2. Скажите где взять дракона?
Квест берется с 35 уровня в Гиране у Специалиста по питомцам Купер [маленькое крылышко]
Он
подробнее...
Почему летоисчисление ведётся от Рождества Христова? Почему именно так? Кто и когда вообще ввёл это?
Летосчисление ведется с разных точек. Свой календарь есть у каждой религии, и у каждой свои точки
подробнее...
Кто ездил на поезде из Мадрида в Аликанте?
и поездом и автобусом.
заранее редко покупаю. здесь в Испании проблем с билетами обычно нет.
подробнее...
Делфи. Найти разницу между двумя датами
1. trunc(date1) - trunc(date2)
2. DaysBetween(date1, date2) // целочисленная разность
подробнее...
когда появился первый календарь
Вероятно, первые предшественники современного календаря появились уже 30 тысяч лет назад. Найдены
подробнее...
Правда что Джейн Вечная и Джейн Убийца из Криппипасты разные персонажи? Если да, то в чём разница между ними?
Нет, это один и тот же персонаж. Вот цитата:
"Мое имя Джейн Анкерсоу, также известная как
подробнее...
Visual Basic проект "Даты и времени" программа 2010 года.
'Что значит "для таймера"?
'Событие таймера Timer (повторение через определённый
подробнее...
Где проходит граница между европой и азией
Где проводить границу между Европой и Азией? На этот вопрос дать ответ совсем непросто. Дело в том,
подробнее...
По какому принципу устанавливается дата Пасхи?
Дата определения православной пасхи
Существуют пасхальные таблицы, в которых день пасхи
подробнее...
А вы знаете по какому календарю мы сейчас живем? Какие календари вы еще знаете?
Календарь (лат. calendarium — долговая книжка: в Древнем Риме должники платили проценты в день
подробнее...