come posso fare per calcolare il tempo che passa da una determinata data..in una pagina ASP??

esempio vorrei che da una determinata data calcolare il tempo suddiviso in:

tot. anni, tot. mesi, tot. giorni, tot. ore, tot. minuti.

ho buttato giù questo codice..ma non è che funzioni molto..

risultato=DateDiff("n", rs("data"), now())

ore=cint(minuti/60)
minuti=risultato mod 60

giorni=cint(ore/24)
ore=minuti mod 24

mesi=cint(giorni/30)
giorni=ore mod 30

anni=cint(mesi/12)
mesi=giorni mod 12


il risultato che ottengo è questo:

0 anni
6 mesi
6 giorni
6 ore
54 minuti

peccato che la data che ho impostato sia di solo 2 giorni fa...

sapete come posso fare per fare ciò..??
14 messaggi dal 09 dicembre 2002
potresti evitare di fare calcoli usando sempre la datediff...fai così

risultato=DateDiff("h", rs("data"), now())
response.write "<br>ore " & risultato
risultato=DateDiff("n", rs("data"), now())
response.write "<br>minuti " & risultato
risultato=DateDiff("s", rs("data"), now())
response.write "<br>secondi " & risultato

risultato=DateDiff("d",rs("data"), now())
response.write "<br>giorni " & risultato
risultato=DateDiff("m", rs("data"), now())
response.write "<br>mesi " & risultato
risultato=DateDiff("yyyy", rs("data"), now())
response.write "<br>anni " & risultato

Come un bambinoo che disegna le cose belle che non ha....passo il tempo ad inventare la realtà
3.122 messaggi dal 16 maggio 2002
Prova cosi':

risultato=DateDiff("n", rs("data"), now())

minuti = risultato mod 60
risultato = risultato - minuti
ore = risultato mod 24
risultato = risultato - ore
giorni = risultato

Questo ti "dovrebbe" (dico dovrebbe perche' non l'ho testato e tra poco devo andare) dare minuti, ore e giorni. Per i mesi e gli anni non l'ho fatto perche' i mesi possono avere 28, 29, 30 o 31 giorni.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
grazie ragazzi..
ho provato ad utilizzare il suggerimento di erprincipe e penso che funzioni tutto correttamente ...
tranne i minuti..

perchè mi visualizza questo risultato:

0 anni 0 mesi 2 giorni 45 ore 2674 minuti

come posso fare..per correggere l'errore??

3.122 messaggi dal 16 maggio 2002
Anche 45 ore non mi sembra che vada tanto bene.. Questo perche'
(giorni) 2 = Round(45/24)
(ore) 45 = Round(2674)

Quei tre valori sono equivalenti, in pratica prima il tempo viene convertito in giorni, poi in ore e poi in minuti, ma senza "normalizzare" il tutto.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
14 messaggi dal 09 dicembre 2002
Se quello che ti ho proposto io è quello che volevi è giusto il calcolo dei minuti, infatti 45*60 fa 2700, quidni 2674 potrebbe essere corretto (dipenda dai minuti delle due date)...
Leggendo bene il posto mi è venuto il dubbio che quello che ti ho proposto io non sia corretto .
facciamo un esempio

data 1 : 10:00:00 del 10/01/2003
data 2 : 11:10:10 del 11/02/2003

tempo trascorso

ore 1
minuti 10
secondi 10
giorni 1
mesi 1
anno 0

Se è questo quello che volevi la mia soluzione non è corretta.

sorry

Come un bambinoo che disegna le cose belle che non ha....passo il tempo ad inventare la realtà
11.886 messaggi dal 09 febbraio 2002
Contributi
Aspettate... non è tanto corretto prendiamo come esempio questo risultato:

0 anni 0 mesi 2 giorni 45 ore 2674 minuti

in particolare, se guardiamo le ore trascorse, risultano 45, quindi MENO dei 2 giorni indicati dall'altro valore.
Allora il risultato è errato, non sono affatto passati 2 giorni. Credo che avendo due date così:

10/2/03 15:00:00 e 12/2/03 12:00:00

la funzione datediff faccia la differenza su ogni parte della data e non su tutta la data stessa. In pratica datediff nel fare le differenze con giorni, mesi, anni non considera affatto l'orario (almeno è quanto è emerso).

Tra le due date infatti, non sono ancora trascorsi 2 giorni, ma datediff ha considerato che 12 - 10 fa 2.

Allora ti conviene usare datediff una sola volta, per determinare i secondi (o i minuti), e poi da li ricostruisci effettivamente il numero di giorni, mesi, ore trascorsi.

Prova così:

secondi = DateDiff("s",rs("data"),Now())
'secondi contiene il numero di secondi di differenza.

minuti = Int(secondi/60) mod 60
ore = Int(secondi/3600) mod 24
giorni = Int(secondi/86400) mod 30
mesi = Int(secondi/2592000) mod 12
anni = Int(secondi/31104000)
secondi = secondi mod 60

adesso dovresti avere un risultato più attendibile... (se non ho sbagliato i calcoli...)

Enjoy learning and just keep making
ragazzi siete dei geni..

grazie BrightSoul

funziona perfettamente..(con uno scarto di un paio di minuti).

data impostata:

03 02 2003 ore 13:50:00

risultato ottenuto:

1 giorni 22 ore 31 minuti 24 secondi


grazie ancora a tutti..

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.