Volevo sapere se esiste qualche funzione che mi restituisce la data attuale, possibilmente sotto forma di 3 valori (giorno del mese, mese, anno). Grazie mille se deciderete di aiutarmi:maLOL:
Volevo sapere se esiste qualche funzione che mi restituisce la data attuale, possibilmente sotto forma di 3 valori (giorno del mese, mese, anno). Grazie mille se deciderete di aiutarmi:maLOL:
*********************************
Andrea
*********************************
inizia guardando la seguente Pillola
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
credo ke tutto ciò sia decisamente al di sopra delle mie conoscenze... nn c'è qualkosina di + semplice???
*********************************
Andrea
*********************************
se sei in windows e possiedi l'header dos.h (mi sembra sia incluso con borland, ma nn ricordo di preciso), includilo e usa la funzione getDate(), che ritorna la data nel tuo formato richiesto.
Per la pillola, provo a riscriverti l'esempio adattato al tuo caso... visto che è C++ ti farei una classe, ma se hai appena iniziato potresti non aver ancora affrontato l'OOP, quindi faccio una funzione:
Ora chiarisco alcune cose:codice:#include <ctime> #include <new> #include <iostream> using namespace std; int* getData(); int main() { int* data = new int[3]; data = getData(); cout << data[0] << "/" << (data[1] + 1) << "/" << (data[2] + 1900) << endl; return 0; } int* getData() { time_t data = time(NULL);//data salvata in data tm* tempo = localtime(&data);//inizializza struttura tm int* times = new int[3];//array che contiene gm, m, a times[0] = tempo->tm_mday;//giorno mese times[1] = tempo->tm_mon;//mese times[2] = tempo->tm_year;//anno return times; }
data[0], in main, contiene un valore che va da 1 a 31, quindi non necessita di interventi, al contrario data[1] contiene il mese e va da 0 a 11, quindi dovrai sempre aumentare di uno il valore(come ho fatto nel codice), data[2], infine, ritorna la differenza tra l'anno attuale e il 1900, quindi basta fare l'operazione inversa e sommare 1900 a data[2], che in questo caso varrà 105.
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Prova questo
Renditi conto dell'output che produce poi te lo formatti come vuoi.codice:#include <time> #include <iostream> using namespace std; int main() { time_t ct; ct = &time(NULL); cout << ctime(&ct); }
Sei sicuro che compili così? Se non va prova con questo:Originariamente inviato da pprllo
Prova questo
Renditi conto dell'output che produce poi te lo formatti come vuoi.codice:#include <time> #include <iostream> using namespace std; int main() { time_t ct; ct = &time(NULL); cout << ctime(&ct); }
Il risultato mi sembra quello più adatto alla tua richiesta:codice:#include <ctime> #include <iostream> using namespace std; int main() { time_t ct; ct = time(NULL); cout << ctime(&ct); return 0; }
Fri Jan 07 22:36:20 2005
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Si in effetti sarebbe interessante capire come mi è venuto di mettere "&" davanti a "time(NULL)" prima di postarlo (tanto più che l'ho testato e nel codice che ho sul PC "&" non c'è). E' giusto quello di NetArrow.
Ciao! Anch'io recentemente ho dovuto risolvere lo stesso prolema. Vi posto la funzione che ho scritto (in ANSI C).
Spero di esser stato utile a qualcuno!codice:int readDate(int id) { time_t date; struct tm * brokendown=NULL; char * readableDate=NULL; time(&date); //Lettura della data //Converto il calendar time dato in formato time_t //in un broken-down time. brokendown=localtime(&date); readableDate=asctime(brokendown); //Memorizzo la data in un formato leggibile! switch(id) { case 1: return brokendown->tm_mday; case 2: return brokendown->tm_mon; case 3: return brokendown->tm_year; case 4: printf("%s", readableDate); break; } return -1; }
![]()
grazie mille a tutti sono riuscito![]()
*********************************
Andrea
*********************************