Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444

    [C++] Funzione per ottenere la data attuale

    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
    *********************************

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    inizia guardando la seguente Pillola

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    credo ke tutto ciò sia decisamente al di sopra delle mie conoscenze... nn c'è qualkosina di + semplice???
    *********************************
    Andrea
    *********************************

  4. #4
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    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:

    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;
    }
    Ora chiarisco alcune cose:

    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)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Prova questo
    codice:
    #include <time>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	time_t ct;
    	ct = &time(NULL);
    	cout << ctime(&ct);
    }
    Renditi conto dell'output che produce poi te lo formatti come vuoi.

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da pprllo
    Prova questo
    codice:
    #include <time>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	time_t ct;
    	ct = &time(NULL);
    	cout << ctime(&ct);
    }
    Renditi conto dell'output che produce poi te lo formatti come vuoi.
    Sei sicuro che compili così? Se non va prova con questo:

    codice:
    #include <ctime>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	time_t ct;
    	ct = time(NULL);
    	cout << ctime(&ct);
    
    	return 0;
    }
    Il risultato mi sembra quello più adatto alla tua richiesta:

    Fri Jan 07 22:36:20 2005

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    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.

  8. #8
    Ciao! Anch'io recentemente ho dovuto risolvere lo stesso prolema. Vi posto la funzione che ho scritto (in ANSI C).

    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;
    }
    Spero di esser stato utile a qualcuno!


  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    grazie mille a tutti sono riuscito
    *********************************
    Andrea
    *********************************

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.