C++ - obliczanie różnicy w sekundach między dwoma czasami

0

Mam taki program, który pobiera dwa czasy (godzina, minuta, sekunda) i oblicza różnicę między nimi w sekundach. Moje pytanie - czy da się zamiast ręcznego wklepywania jednego z czasów pobrać bieżący czas korzystając z biblioteki ctime i jakoś zrzutować tak pobraną bieżącą godzinę, minutę i sekundę na inta?

Kod:

#include <iostream>
using namespace std;

int calculateSec(int, int, int);
int calculateTime(int, int);

int main() {
	int totalseconds1 = 0;
	int totalseconds2 = 0;
	int hr1 =0, min1 =0, sec1 = 0;
	int hr2 =0, min2 =0, sec2 = 0;

	cout<<"czas 1: godzina, minuta, sekunda:"<<endl;
	cin>>hr1>>min1>>sec1;

	cout<<"czas 2: godzina, minuta, sekunda:"<<endl;
	cin>>hr2>>min2>>sec2;

	totalseconds1= calculateSec (hr1, min1, sec1);
	totalseconds2= calculateSec (hr2, min2, sec2);

	int timeelapsed=calculateTime (totalseconds1, totalseconds2);


    cout << "Roznica w sekundach " << timeelapsed << endl;
	return 0;
}

int calculateSec(int hr1, int min1, int sec1) {
	int hour = hr1 * 3600;
	int min = min1 * 60;
	int totalseconds1=hour+min+sec1;
	return totalseconds1;
}


int calculateTime(int totalseconds1, int totalseconds2) {
	int timeelapsed=totalseconds1-totalseconds2;
	return timeelapsed;
}
 
1

Poczytaj o czasie uniksowym (unixtime).

6

Zamiast bawić się w ctime użyj <chrono>.

auto read_hour_min_sec(std::istream& i) {
	int h{},m{},s{};
	i >> h >> m >> s;
	return chrono::hours(h) + chrono::minutes(m) + chrono::seconds(s);
}

int main()
{
	cout<<"czas 1: godzina, minuta, sekunda:"<<endl;
	auto t1 = read_hour_min_sec(cin);

	cout<<"czas 2: godzina, minuta, sekunda:"<<endl;
	auto t2 = read_hour_min_sec(cin);

	cout << "Roznica w sekundach: " << (t1-t2).count() << endl;
}

http://melpon.org/wandbox/permlink/naqBHKZu4qnoLPTj

Od obecnej daty masz system_clock, ale problemem jest wydostanie z niego obecnej godziny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1