Mam problem. Wojuję z <ctime>, żeby działało jak wydaje mi się, że powinno wg dokumentacji, na tyle ile ją jestem w stanie zrozumieć, uff.
Program docelowo ma być funkcją w innym programie zwracającą string zawierającą datę/godzinę po dodaniu czasu o ilość sekund, tu w próbach o wartość 1234567 (jakieś dwa tygodnie).
Udało mi się "takie coś":
(programik zawiera przerwy w prinf(składnia kopiowana z przykładów) i cout żebym wiedział co on tam kombinuje)
#include <iostream>
#include <ctime>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
struct tm czas_s;
czas_s.tm_sec = 59;
czas_s.tm_min = 59;
czas_s.tm_hour = 23;
czas_s.tm_mday = 26;
czas_s.tm_mon = 1;
czas_s.tm_year = 2013 - 1900;
time_t czas = 0;
czas = mktime( & czas_s );
cout << "Czas z tm:";
printf( "%s", ctime( & czas ) );
cout << endl;
czas = czas + 1234567;
cout << "czas+1234567 sekund %s" << ctime( & czas ) << endl;
char bufor[ 80 ];
strftime( bufor, 80, "godzina wyjsciowa to: %H:%M:%S", & czas_s );
printf( "[Zawartosc bufora]: \"%s\"\n", bufor );
struct tm * aktualnyCzas;
aktualnyCzas = localtime( & czas );
strftime( bufor, 90, "teraz godzina (+1234567 sekund) to: %H:%M:%S", aktualnyCzas );
printf( "[Zawartosc bufora]: \"%s\"\n", bufor );
string czas_w_string = "sprawdzam_string:";
string czas_w = " ";
cout << czas_w_string;
int i = 0;
do
{
czas_w =( bufor[ i ] );
czas_w_string += czas_w;
i++;
} while( bufor[ i ] != '\0' );
cout << czas_w_string;
return 0;
}
Ja, mam problemy dwa. Otóż raz wyświetla tak raz tak godzinę "zmejkowaną" z czas_s. Tylko raz uruchomiony program pokazuje 23:59:59 raz 22:59:59. (jakby raz była utc raz lokalna).
Druga sprawa nie mogę sobie poradzić z tymi strftime(...."%Y %h %a-%T", aktualnyCzas s strftime). Drukuje pusty bufor. Jak kopiuj/wklejam %H:%M%S z przykładu ze strony działa. no ale ja chce swoje nie z przykładu.
Madzik, nic nie drukuje czy klawiatura jakaś nie odpowiednia ?
co mam wpisać w
strftime( bufor, 90, "teraz godzina (+1234567 sekund) to: %Y %h %a-%X", aktualnyCzas );
żeby uzyskać Rok(4cyfrowy), miesiąc(3literowy),dzień(skrót) godzina HH:MM:SS? kiełbasi coś i daje 2013 ale reszta to kaszanka.
Co pewnie rozśmieszy, to sposób przepisania bufora do string. no nie znalazłem innego sposobu, jeżeli jest coś konkretniejszego do zamiany char na string(stringstream prawo lewo działał tylko do spacji) proszę o pomoc.