Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    5

    printf di time()

    Salve!!

    io ho un problema con la funzione time...

    time_t rawtime;
    struct tm * timeinfo;
    rawtime=time (0);
    printf ( "The current date/time is: %s",ctime(&rawtime) );
    printf ( "Sec: %ld",rawtime);

    La stringa ritornata è corretta, mentre i secondi non lo sono, mi viene ritornato un valore negativo, quindi sbagliato!!

    Visto che la funzione ctime funziona deduco che sia il modo in cui la stampo che sia sbagliato...
    "purtroppo" io devo per forza di cose salvare i secondi su un file quindi devo sapere come fare a stampare correttamente il valore!... qualcuno ha qlc idea?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    A me restituisce un valore corretto ... quale compilatore stai usando?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: printf di time()

    Originariamente inviato da impy
    La stringa ritornata è corretta, mentre i secondi non lo sono, mi viene ritornato un valore negativo, quindi sbagliato!!
    Il valore ritornato da time() è il numero totale di secondi trascorsi dalle 00:00:00 UTC del 1 Gennaio 1970 e non vedo come possa essere negativo, visto che ad oggi il valore è appena poco meno di 1,2 miliardi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    5
    Sto usando Labwindows CVI, che compila compatibile VisualC++ o BorlandC++ .
    In entrambi i casi mi da questo valore...

    ho provato a stampare con il %u, ma ad ogni modo il risultato è questo:

    The current date/time is: Fri Mar 23 15:51:50 2007
    Sec: 3383650310


    I secondi sono sbagliati cmq, ho verificato con PHP

    Originariamente inviato da andbin
    Il valore ritornato da time() è il numero totale di secondi trascorsi dalle 00:00:00 UTC del 1 Gennaio 1970 e non vedo come possa essere negativo, visto che ad oggi il valore è appena poco meno di 1,2 miliardi.
    Appunto, è quello che mi chiedo pure io!!!

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da impy
    The current date/time is: Fri Mar 23 15:51:50 2007
    Sec: 3383650310
    La data estesa che hai indicato corrisponde a un time_t (corretto, ho provato sul mio PC) di 1174661510 secondi.
    Il tipo time_t è con segno, quindi il valore in secondi che hai indicato sarebbe -911316986, che corrisponde, come data, a Fri Feb 14 10:23:34 1941.

    C'è qualcosa che non quadra .....

    Per curiosità, se provi a fare:
    codice:
    time_t t = 1174661510;
    printf ("%s\n", ctime (&t));
    Che ti stampa??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    5
    La data estesa che hai indicato corrisponde a un time_t (corretto, ho provato sul mio PC) di 1174661510 secondi.
    Il tipo time_t è con segno, quindi il valore in secondi che hai indicato sarebbe -911316986, che corrisponde, come data, a Fri Feb 14 10:23:34 1941.
    ... Quindi se io volessi avere il valore time corretto dovrei fare il complemento a 2 del valore di time() ? In questo caso " -911316986" ??

    Quello che il tuo codice mi restituisce è:

    Tue Mar 23 15:51:50 1937

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Originariamente inviato da impy
    printf di time()
    Non chiudo la discussione solo per bontà e perché mi rendo conto che nell'ultima chiusura io non ti abbia segnalato il link diretto al Regolamento, che dovresti leggere ed applicare nella partecipazione a quest'area del forum.

    Il linguaggio va indicato anche nel titolo della discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da impy
    Quello che il tuo codice mi restituisce è:
    Tue Mar 23 15:51:50 1937
    Se il mio codice che dovrebbe stampare (come ho verificato sul mio PC) la stringa "Fri Mar 23 15:51:50 2007" a te invece stampa "Tue Mar 23 15:51:50 1937", allora se noti c'è una differenza nel solo anno (e nel giorno della settimana, che però è "calcolato" correttamente), tale per cui sul tuo sistema ci sono 70 anni in meno.

    Il perché, beh lo ignoro .... davvero curiosa come cosa ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.