"MAB" <mabso...@hotpop.com> escribi� en el mensaje
news:epwNMOc$JHA...@TK2MSFTNGP03.phx.gbl...
Hola,
VB6 emplea valores de tipo double para la expresi�n de dimensiones
temporales.
El valor CERO corresponde a las cero horas del 30 de diciembre de 1899 (no
hace mucho le� un art�culo que explicaba la raz�n de este valor, pero lo
olvid�).
d = CDate(0#)
? Format(d, "dd/mm/yyyy hh:nn:ss")
30/12/1899 00:00:00
A partir de ah�, por cada unidad que sumas o restas, avanzas o retrocedes un
d�as con respcto a esa fecha:
d = d + 2
? Format(d, "dd/mm/yyyy hh:nn:ss")
01/01/1900 00:00:00
Si sumas valores menores de uno, sumar�s fracciones de d�a:
d = d + 2.5
? Format(d, "dd/mm/yyyy hh:nn:ss")
03/01/1900 12:00:00
(como ves, al sumar 2.5 avanzas dos d�as y medio).
Si quieres sumar un minuto, sumas 1 / (24 * 60): un d�a tiene 24 horas, y
una hora 60 minutos:
d = d + 1 / (24 * 60)
? Format(d, "dd/mm/yyyy hh:nn:ss")
03/01/1900 12:01:00
Es decir, puedes operar sobre valores de tipo Date usando exactamnete las
mismas operaciones que usar�as para valores num�ricos.
Queda un problema para la presentaci�n: los formatos aplicables a las fechas
asumen que quieres presentar Fechas, no intervalos de tiempo.
Para presentar intervalos, debes escribir tus propias funciones.
Por ejemplo:
Public Function Horas(ByVal d As Date) As String
Dim parteFinal As String
parteFinal = Right(Format(d, "hh:nn:ss"), 5)
Horas = Trim(Str(Int(d * 24) / 24 * 24)) & ":" & parteFinal
End Function
Public Function Dias(ByVal d As Date) As String
Dim parteFinal As String, diasCompletos As String
diasCompletos = Trim(CDbl(Int(d))) & "d "
Dias = diasCompletos & Horas(d - Int(d))
End Function
Y as� seg�n lo que necesites.
Salud!
__________ Information from ESET Smart Security, version of virus signature database 4219 (20090705) __________
The message was checked by ESET Smart Security.
"Leonardo Azpurua" <leon...@exmvps.org> escribi� en el mensaje
news:uHwauRe$JHA....@TK2MSFTNGP03.phx.gbl...