Obliczanie różnicy czasu

0

Witam.

Chciałem napisać program, który na podstawie aktualnego czasu, oblicza różnicę czasu w innym mieście/państwie.
Czas innych miast może być oczywiście stałą wartością.

Do tej pory - pomijając problemy z poleceniem localtime w MSVS, "uciekłem" do DevC++ - mam taki kod

#include <ctime>
#include <cstdlib>
#include <iostream>

using namespace std;

int zegar(time_t & t)
{
	t = time(NULL);
   struct tm* czas;
   czas = localtime( &t );

   cout << "Godzina " << czas->tm_hour << ":" << czas->tm_min << ":"
   << czas->tm_sec << endl;
   return t;
}

int main()
{
	time_t t, czas;
	struct tm* miasto;
	double roznica;
	struct tm * koniec;
	zegar(t);
	time( & czas);
	time( & t);
	koniec = localtime(&czas);
	miasto = localtime(&t);
	time (&koniec);
	roznica = difftime(miasto, koniec);
	cout << roznica;
	
	return 0;
}

Aktualny czas pobiera prawidłowo. Problem jest w funkcji main(). Ten kod w main'ie oczywiscie jest zły i nie umozliwia mi uruchomienie programu. Jestem noob i samouk i nie mogę znaleźć rozwiązania na ten problem. Aktualny kod jest po dziesiątkach przerobień i prób. Pomożecie? Z góry dzięki.

P.S. To, że tutaj napisałem, nie znaczy, że przestałem sam próbować ;)

0

Coś nie bardzo rozumiem co chcesz osiągnąć, aby wyświetlić czas innego miasta to musisz znać jego TIME_ZONE jeżeli ją znasz to znasz różnicę czasów.

0

Tak jak w temacie, obliczyć różnicę czasu.
np. między moim miastem (strefą czasową) a miastem wybranym, różnica wynosi X min.

0

To stwórz sobie tablicę miast ze wskazaniem zony czasowej.

X=abs(MOJA_ZONA-Miasta[i].ZONA)*60;
0

Dalej mam z tym problem

int main()
{
	time_t t, miasta[5], czas;
	struct tm* miasto;
	czas = time(NULL);
	double roznica;
	
	zegar(t);
	miasta[1] = localtime(&czas);
	roznica = abs(t-miasta[1])*60;
	cout << roznica;
	
	return 0;
} 

Błąd
C:\...\DevC++\Czas\main.cpp [Error] invalid conversion from 'tm*' to 'time_t {aka long long int}' [-fpermissive]

0

Wywal wszelkie time_t , time(), struct tm, localtime to wszystko nie jest ci potrzebne.
Jeżeli chcesz automatycznie wykryć timezone to:

   time_t t=0;
   char buf[8];
   strftime(buf,sizeof(buf),"%Z",localtime(&t));
   int min=atoi(buf);
   min-=40*(min/100);
   printf("odchylenie minutowe twojej time zony to %d\n",min);

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