char[20] to time_t = zła godzina

char[20] to time_t = zła godzina
NE
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

Witam. Taki problem, język C środowisko Linux, wysyłka na serwer SOAP.

Kopiuj
    struct tm tm2;
    printf("Data YYYY-MM-DD HH:MM:SS DO: ");
    char time_details2[20];
    fgets(bufor,sizeof(bufor),stdin);
    sscanf(bufor,"%[^\n]s",time_details2);
    strptime(time_details2, "%Y-%m-%d %H:%M:%S", &tm2);
    get_AlarmFilter.dtTo=mktime(&tm2);

get_AlarmFilter.dtTo jest ładowany do XML jako time_t

Konwersja z tablicy char na time_t niby ok, ale zwrot ze serwera (wysyłam date w strukturze xml) mówi, że zamiast godziny 8:20 przesyłam 7:20. Komputer ma ustawioną naszą strefę czasową, serwer chyba też. Coś nie tak z konwersją czasu mam?

edytowany 3x, ostatnio: nexusian
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:15 dni
0

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
NE
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

Tzn. sugerujesz abym dodawał różnicę czasu dla naszej strefy i tak zapisywał jako time_t? Time_t jest w UTC tak? Myślałem, że konwersja automatycznie doda nam sekundy z pola struktury czasu - offset, czy jakoś tak. Dobrze to rozkminiam?

NE
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

zmieniłem mktime na timegm i chyba działa

NE
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

ok, podobnie rozwiązałem z przesyłaniem czasu obecnego na serwer bo też przekłamanie było:

Kopiuj
    get_AlarmNew.alarmDateTime=time(0); //DZIWNA KONWERSJA CZASU WG. TEROI UGIĘCIA CZASOPRZESTRZENI STEPHENA HAWKINGA
	char hawking[20];
	strftime(hawking, 20, "%Y-%m-%d %H:%M:%S", localtime(&get_AlarmNew.alarmDateTime));
    strptime(hawking, "%Y-%m-%d %H:%M:%S", &tm3);
    get_AlarmNew.alarmDateTime=timegm(&tm3); //KONIEC KONWRSJI

Zamykam :)

edytowany 1x, ostatnio: nexusian

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.