Newsgroup: it.comp.lang.visual-basic
Titolo: somma di ore

Salve a tutti,
    il problema e' il seguente: ho un programma che somma delle variabili di
tipo "Date" sempre inferiori alle 24h (es. 01.00.00 per 1 ora ecc.).
    La somma restituisce un valore corretto fino a che non si raggiungono le
23.59.00 dopodiche' ricomincia da 00.00.00.
    Ho cercato nell' MSDN, ma non ho trovato la soluzione. Provando infatti
con variabili di tipo date, usando la funzione FormatDateTime con
l'argomento "vblongtime", continua a commettere lo stesso errore.
    A me servirebbe formattare il risultato in modo che possa essere
maggiore di 24h. E' possibile? Se si come?
ringrazio anticipatamente per l'eventuale aiuto,
ciao,
asast

Salve
In realta' se guardi bene dopo 23.59.59 la data diventa giorno 1 + 00.00.00
(per esempio anno 1930 mese 4 giorno 1 ora 00.00.00, intendo il primo giorno
che vb puo' gestire).
Se vuoi mettere via ore oltre le 24 l'unico modo decente e sicuro e'
convertire la data in secondi o minuti e usare una variabile int, long, o
altro.
Salve
                                Dbg
asast ha scritto nel messaggio ...






Private Sub Command1_Click()
Dim sumt As 
Date
sumt = #3:00:18 PM# + #4:25:14 PM#
MsgBox 
ore_minuti_secondi(sumt)
End Sub
 
Private Function 
ore_minuti_secondi(value As Date) As String
Dim giorni As Integer
Dim 
tempo As Double
giorni = CInt(value)
tempo = value - 
giorni
ore_minuti_secondi = giorni * 24 + Hour(tempo) & ":" & 
Minute(tempo) & ":" & Second(tempo)
End Function


 


Ciao e spero possa esserti utile


 




Allora,
    mi rispondo da solo sperando che serva.
Grazie anche al suggerimento di Giuseppe, ho creato delle matrici che si
passavano i valori inseriti rielaborandoli.
La prima era di tipo "string", scindendola in due ho diviso la parte delle
ore, che poi ho moltiplicato * 60, da quella dei minuti, sommandole poi
insieme.
Tutto questo dopo averle ovviamente riconvertite in integer.
Alla fine ho sommato tutti i valori interi contenuti nei singoli elementi
delle matrici per ottenere il numero dei minuti totali.
Quindi ho diviso questo valore per 60, ottenendo cosi' il numero delle ore
tot., poi ho operato sempre su questo valore con l'operatorwe MOD cosi' da
avere il resto intero, che ho poi concatenato al numero ore totali per avere
un output del tipo: ore totali: 53.20.
ciao,
asast

     mi rispondo da solo sperando che serva.
Non capisco come tu possa nutrire di queste speranze quando proprio tu
dimostri, postando una soluzione gia` postata almeno tre volte negli ultimi
giorni, di non leggere gli altri thread...
Senza cattiveria, veh... e` solo una critica ;-)
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Maurizio
acc...davvero? beh...non ho tuttora avuto l'occasione di leggere i vari
thread del NG riguardanti questo argomento, quindi do per certo che tu abbia
ragione e chiedo venia...ma di cosa?
Di  cosa chiedo venia? Adesso che ci penso: ho seguito i seguenti
comportamenti:
1. postare un msg sul NG per un consiglio;
2. leggermi della documentazione;
3. risolvere il mio problema;
4. mettere al corrente il NG della soluzione che avevo trovato.
Senza cattiveria ... non mi sembra ci sia nulla da criticare, o meglio che
la tua critica, legata *solo* alla parola "spero" del mio post non sia per
niente costruttiva, una perdita di tempo insomma, come d'altronde questa mia
precisazione che concludo subito.
i miei rispetti,
asast

 asast
Meno rispetti e piu` rispetto: perche' una critica sia costruttiva occorre
la collaborazione del criticato... ;-))
