la diferencia entre dos horas en vb6

19/12/2012 - 09:32 por apurada | Informe spam
¡ Hola !
Alguien de ustedes podría pasarme el código de la diferencia entre dos fechas en VB6 pues la fechas las capturo en Maskedit con formato de hh:mm a.m. por favor me urge, pues me dice que no coicide los tipos, es decir, pase el valor de maskedit a una variable de tipo double y el otro a un variable igual la formula es restarla y hago la multiplicacion de diferencia * 24 pero me marca error

Preguntas similare

Leer las respuestas

#1 flyguille
18/01/2013 - 00:02 | Informe spam
El miércoles, 19 de diciembre de 2012 05:32:03 UTC-3, apurada escribió:
¡ Hola !

Alguien de ustedes podría pasarme el código de la diferencia entre

dos fechas en VB6 pues la fechas las capturo en Maskedit con formato de hh:mm

a.m. por favor me urge, pues me dice que no coicide los tipos, es decir, pase

el

valor de maskedit a una variable de tipo double y el otro a un variable igual

la

formula es restarla y hago la multiplicacion de diferencia * 24 pero me marca

error



usá variables DATE

dim fecha1 as date
dim fecha2 as date
dim diff as date


diff=fecha1-fecha2

si tienes q filtrar hora minutos segundos


fecha1=int(fecha1) ' esto quitará las fracciones, es decir horas minutos segundos.

la diferencia puede dar negativa cuando fecha2>fecha1

creo q si intentas imprimir con format$(date, "YYYY/MM/DD") una fecha negativa tira error, lo mismo si deseas de alguna forma usar CDATE() para ingresar una constante de fecha negativa, no se puede.

los factores negativos se pueden usar para cálculos de periodos.

por ej, a una fecha tal, atrazarla 30 días.

fecha1 = - 30
fecha2 = now

fecha2=fecha2-fecha1
Respuesta Responder a este mensaje
#2 flyguille
18/01/2013 - 00:17 | Informe spam
El miércoles, 19 de diciembre de 2012 05:32:03 UTC-3, apurada escribió:
¡ Hola !

Alguien de ustedes podría pasarme el código de la diferencia entre

dos fechas en VB6 pues la fechas las capturo en Maskedit con formato de hh:mm

a.m. por favor me urge, pues me dice que no coicide los tipos, es decir, pase

el

valor de maskedit a una variable de tipo double y el otro a un variable igual

la

formula es restarla y hago la multiplicacion de diferencia * 24 pero me marca

error



las variables date es como una variable numérica común y corriente, equivalente a una variable double.

cada entero es un día
una 24ava parte del entero es una hora
una 1440ava parte del entero es un minuto.
y así.

entonces tú puedes sumar restar , multiplicar etc.

puedes tener numeros negativos y positivas, pero las funciones de conversión a fechas TEXTUALES strings no funcionarán si es negativa.


date1 = cdate("00:01:00") ' date1 tendrá el valor numerico de 1 minuto.
date2 = 1 ' date2 tendrá el valor a 1 día.


son muy últiles para cálculos de periodos, es decir el paso del tiempo, o comparar 2 fechas, obtener la longitud (periodo transcurrido entre 2 fechas).

cuando se hace una comparación de fechas, el número numérico suele ser negativo.

eso, no se puede convertir a texto con format$, x q dá error o se pierde el signo (no recuerdo cual de los 2).

ni puedes lograr usando CDATE("00:01:00") para introducir desde el texto un valor negativo.

la negatividad hay q dársela matemáticamente, ya q la conversion texto a numero a texto siempre trabaja como si fuera positivo.

yo cuando he visto este "chiquero" de VB6, me he puesto a hacer un truco.

obj.get sign_value$
obj.get valor$

if val(sign_value$) then
date1 = - cdate(valor$)
else
date1 = cdate(valor$)
endif

y así,

cuando se desea guardar esos datos sin perder el signo


if date1<0 then
' Es negativo.
obj.put "-1"
obj.put format$(date1,"YYYY/MM/DD hh:mm:ss")
else
obj.put "0"
obj.put format$(date1,"YYYY/MM/DD hh:mm:ss")
endif



cuando se guarda en forma textual en una base de datos o donde sea, una fecha, se DEBE USAR SI O SI SIEMPRE "YYYY/MM/DD hh:mm:ss") ¿por qué?, porque sino tu código dependerá de la configuración regional de windows en donde se ejecute, esta es la única forma donde VB no va a confundir los MESES con los DIAS a la hora de procesar una fecha expresada textualemnte.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida