Newsgroup: it.comp.lang.visual-basic
Titolo: VB6 conversioni

chi mi sa dire come convertire un valore in 64 bit che contiene il numero di
secondi trascorsi da una certa data (es. 1/1/1980 0:0:0) in data (
es:"22/07/2004 11:00:00") ?
grazie in anticipo

 data ( es:"22/07/2004 11:00:00") ?
DateAdd
Aggiungi i secondi che sai alla data di riferimento, e ti viene restituita
una data.
Ciao
Alberto

 ha scritto nel messaggio
news:2m9bitF...@uni-berlin.de...


 numero di secondi a 64 bit..
Non avevo osservato questa cosa...
Dunque, 64bit sono 8 byte. Se non sbaglio il Long č 4byte, cioč un DWord.
Se č 8 byte, sei giŕ a posto. Altrimenti puoi fare un loop, iterando il
numero di volte dato dal MostSignificantDWord, e sommando ad ogni giro il
numero di secondi dato dal LeastSignificantDWord.
Ometto ogni commento sulle performance.
In alternativa, puoi far fare l'operazione ad un dbms tipo Sql-Server, che
supporta anche valori a 64bit, per cui invochi una select usando anche lě il
DateAdd.
Ciao
Alberto

 es:"22/07/2004 11:00:00") ?
E dove l'hai memorizzato questo valore a 64 bit?
Le date *sono* 64bit.
Ciao
--
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 E dove l'hai memorizzato questo valore a 64 bit?
Presumo abbia due Long, oppure una stringa esadecimale.
Ciao
Alberto

 Presumo abbia due Long, oppure una stringa esadecimale.
Ma tu sai che in informatica non si "presume" niente :)
Se ad es. li tira su da un file basta fare una Get su una var di tipo Date
ed è già a posto.


 Date ed è già a posto.
Avevo pensato anche a questo.
Ma non credo che poi si possa fare un dateadd della data di riferimento,
utilizzando una Date come parametro da addizionare.
Ciao
Alberto

 utilizzando una Date come parametro da addizionare.
Beh, il DateAdd l'hai tirato fuori tu :)
Dipende lui cos'ha in 'ste benedette date.
Eventualmente una data può essere convertita in secondi in questo modo:
Data * 24 * 60 * 60
E la somma tra due date è assolutamente lecita
Data2 = Data + DataContenenteISecondi
Ciao

 Beh, il DateAdd l'hai tirato fuori tu :)
Beh, non vedo grosse opzioni.
Lui ha una data di riferimento. Che so, le Idi di Marzo del 44a.C., può
andare?
Poi ha 64bit che gli rappresentano il numero di secondi trascorsi da quella
data, e deve trovare la data finale.
Innanzitutto, dove cavolo ha 'sti benedetti secondi, non lo si sa.
Presumevo, in una stringa esadecimale o in due Long che contengono il
MSDWord e il LSDword.
Quindi, volendo posso fare la somma mettendo il periodo in giorni, cioè
Secondi/86400. Ma se secondi è 8 byte, non ho capienza per fare questa
operazione.
Allora pensavo di usare due long, contenenti appunto il MostSignificant e il
LeastSignificant, e fare un ciclo MostSignificant volte, sommando ogni volta
i secondi del LeastSignificant.
Effettivamente, come mi fai notare, si potrebbe sommare le date dove la
prima è quella di riferimento, e la data ricavata 'inchiodando' i 64bit al
suo interno.
Non ho mai provato questa cosa, ma teoricamente potrebbe funzionare. A meno
che, la data non venga considerata implicitamente un double, per cui i 64bit
vengono interpretati come mantissa, esponente, segno, ecc..., e il risultato
sarebbe sballato.
Ciao
Alberto