Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] Problemi con le date

    Ciao a tutti,
    sono nuovo del forum....Spero che qualcuno possa essermi di aiuto.
    Ecco il mio problema...ho una data espressa in millisecondi e la vorrei convertire in un stringa dal classico formato DD MM YYYY hh:mm:ss
    Come potrei fare???
    Aspetto con ansia vostre risposte...
    Grazie anticipatamente

  2. #2
    Millisecondi trascorsi da quando? Per caso questo numero ti viene fornito da una delle funzioni di time.h?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    correggo...la data non è espressa in millisecondi ma in secondi...

  4. #4
    si si proprio cosi...ho utilizzato time.h....
    tieni presente che il dato però è gia stato inserito nel db e quindi quando lo prelevo lo prelevo come integer

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da francescoprogc
    correggo...la data non è espressa in millisecondi ma in secondi...
    Sì ... secondi ... ma da quando?

  6. #6
    Se ultimamente questo dato è stato ottenuto dalla funzione time puoi usare la funzione asctime (che formatta la data nel formato "Sun Feb 03 11:38:58 2002\n\0") oppure, per formattare la data come ti pare, usa la funzione gmtime per ottenere una struttura tm in cui vengono memorizzate tutte le informazioni sulla data in questione che ti possono servire (secondi, minuti, ore, giorni, mese, anno, giorno della settimana, giorno del mese, giorno dell'anno). A questo punto potrai usare una normale printf per visualizzare la data in questione a video (o una sprintf per memorizzarla in una stringa) con il formato che preferisci.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    grazie per le risposte....
    credo di non poter utilizzare la funzione gmtime perkè il mio input è una data espressa in secondi dal 1/1/1970....credo sia obbligato ad utilizzare la funzione ctime
    Ora ho il problema inverso...
    come faccio a partire da una stringa GG/MM/YYYY hh:mm:ss ad ottenere la data espressa in secondi?????
    Grazie mille a tutti per l'interessamento

  8. #8
    Originariamente inviato da francescoprogc
    credo di non poter utilizzare la funzione gmtime perkè il mio input è una data espressa in secondi dal 1/1/1970....
    ... che è esattamente il tipo di input che si aspetta la funzione gmtime...
    credo sia obbligato ad utilizzare la funzione ctime
    Se funziona ctime funziona anche gmtime.
    Ora ho il problema inverso...
    come faccio a partire da una stringa GG/MM/YYYY hh:mm:ss ad ottenere la data espressa in secondi?????
    Usa una sscanf per separare i campi memorizzandoli in una struttura tm, quindi passa tale struttura a mktime per ottenere la data sotto forma di secondi trascorsi da mezzanotte dell'1/1/1970.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,283
    Originariamente inviato da francescoprogc
    credo di non poter utilizzare la funzione gmtime perkè il mio input è una data espressa in secondi dal 1/1/1970....credo sia obbligato ad utilizzare la funzione ctime
    Non è che sei obbligato .... dipende da cosa devi fare. Partiamo dal fatto che se hai i secondi trascorsi dalla "epoch" (la solita data di inizio del 1970), allora hai un 'time_t'. Con un valore di questo tipo puoi fare diverse cose:
    - passarlo direttamente alla ctime() per avere una rappresentazione testuale (il cui formato però è fisso)
    - passarlo a gmtime()/localtime() per avere una struttura struct tm con i valori separati.

    Oppure puoi passare a strftime() una struttura struct tm per avere una rappresentazione testuale nel formato che preferisci.

    Originariamente inviato da francescoprogc
    Ora ho il problema inverso...
    come faccio a partire da una stringa GG/MM/YYYY hh:mm:ss ad ottenere la data espressa in secondi?????
    Sorpresa .... non c'è una funzione standard per fare questo! Analizza per conto tuo la stringa, ricerca i vari separatori nella stringa (strchr, strtok, quello che vuoi), converti i numeri come vuoi (atoi o altro) o magari tutto questo con sscanf e poi riempi una struttura struct tm e la converti in time_t, se serve.

    Benvenuto nella libreria standard del "C" ... questo è tutto ciò che ti offre (e onestamente parlando, è molto poco).
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.