FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
resultado de restar 2 horas
saludos a todos los del foro nuevamente...
estuve buscando en los foros viejos, y encontre informacion sobre la resta de 2 horas, lo tuve leyendo y analizando. bueno mi inquietud es la siguiente restar 2 horas HE, HS y que me de un total(08:23:19) por ejemplo y hacer una condicion si es mayor o menor de 8 horas, con el codigo que puse me da el siguiente resultado= 08:23:19 a.m. y no quiero que aparezca (a.m.), otra cosa es que cuando pasa de 12 horas se vuelve loco, es decir si son 13 horas dice 1 hora, y el resultado no me da, bueno el codigo que use es el siguiente.. her hora de entrada hsr hora de salida hora resultado de la resta Código:
var DifH, DifM, DifS, DifMs: Word; her,hsr,hora:ttime; //las hora estan en la tabla Horas her:=Tabla.IBQHorasHE.AsDateTime; hsr:=Tabla.IBQHorasHS.AsDateTime; DecodeTime((hsr) -(her), DifH, DifM, DifS, DifMs); hora:= EncodeTime(DifH, DifM, DifS, DifMs);//aqui tranformo el resultado a tipo hora pero no se como cambiar el formato de am/pm if hora>=strtotime('06:00:00') then begin cesta:=cesta+1;//esto es un contador end; end; acepto sugerencia de cambiar todo el codigo por uno mejor gracias......................................................................... |
#2
|
|||
|
|||
Hola,
no se si te servirá de algo ... Ya que TTime = TDateTime ... Por que no lo haces así: Para sumar dos horas a Now --> DosHorasMas := Now+((1/24)*2) Para restar dos horas a Now --> DosHorasMenos := Now-((1/24)*2) y los calculos los haces con la fecha incluida ...
__________________
Sotoca Web |
#3
|
|||
|
|||
No se pero porque no restas directamente las dos horas, eso te daria un número por ejemplo:
14:00:00 - 12:00:00 = 2.00 Tal ves de esta forma te sirve por lo menos para hacer los calculos.
__________________
Suerte Alejandro |
#4
|
||||
|
||||
fdelamo... puedes darme un poco mas de detalles por favor porque la verdad no entendi mucho como usarlo, podrias ser mas especifico o donde y como lo uso???????????
|
#5
|
||||
|
||||
alejandro porque cuando resto las dos horas directamente me pasa lo mismo, si da mas de 12 horas, ejemplo 13 horas me dice 1 hora, y eso es lo que quiero corregir....
|
#6
|
|||
|
|||
Los valores TTime, TDate y TDateTime, representan las fechas de la siguiente manera: La parte entera es la fecha (la fecha 0 creo que es 31/12/1899, creo) y los decimales la hora, por tanto, una hora es 1/24, un minuto 1/24/60 ...
Si quieres sumar dos horas Fecha+2/24 No se si me explico ....
__________________
Sotoca Web |
#7
|
||||
|
||||
ok, entendi la logica, pero si tengo las 2 horas 08:13:14 a.m. y 09:52:17 p.m. como expreso esas 2 con el metodo que me diste?????????
|
#8
|
|||
|
|||
Al tenerlo en un TDate, TTime o TDateTime ya lo tienes así, ¿o es que tienes esas horas en texto?
__________________
Sotoca Web |
#9
|
||||
|
||||
restar hs-he
hora:=hs-((1/24)*hs); asi lo puse y no me da, da otra hora y sigue dandome el formato am/pm, me imagino que lo exprese mal verdad?? |
#10
|
|||
|
|||
Si quieres restar dos horas, se hace directamente: hs-he, pero ten en cuenta que el resultado no es una hora, es la diferencia de horas, teniendo en cuenta que 1 hora = 1/24
__________________
Sotoca Web |
#11
|
||||
|
||||
exacto e alli el detalle, si resto directo, hs-he 11:02:10 p.m. - 08:59:10 a.m. son 14 horas 7 minutos, y me da 2:33:00 p.m.
como hago que el 2:33:00 p.m. se tranforme en 14:07:00????????????? |
#12
|
||||
|
||||
Si puedes, te aconsejo que cambies el tipo del campo; en lugar de usar hora usa un TimeStamp (fecha y hora todo en el mismo campo)
Después puedes usar de la unidad DateUtils, toda una batería de funciones: - HoursBetween(fecha1, fecha2); - MinutesBetween - DaysBetween - MillisecondsBetween - etc. La fecha y hora en sí misma, no se guarda con ningún formato de 12/24 horas. Es al tiempo de mostrarlo en pantalla cuando aplicas el formato que quieres. Para ello puedes usar FormatDateTime('hh:nn:ss',fecha1); Al usar el formato de fecha+hora, no tendrás ningún problema en sumar dos fechas, o sumarle 33 horas, siempre obtendrás el resultado correcto. Cita:
Edito: El resultado no podrás codificarlo como una TTime, ni como TDateTime, ya que tiene el límite en 24 horas, por tanto, jamás podrás crear una hora con 26 horas. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 21-02-2007 a las 20:06:51. |
#13
|
||||
|
||||
El windows es quien te define el formato de a.m. y p.m. o formato 24 Hrs.
Búscale por ese lado... y si es necesario, haz que tu aplicación cambie el formato cuando lo uilices. Ahora que... pudieras agarrar la hora y "decodificarla" y construir tu propia cadena si es que no quieres cambiar el formato de hora de windows. Suerte!
__________________
Tiempo y ocasión acontecen a todos! |
#14
|
|||
|
|||
Si entendi correctamente te interesa saber cuanto tiempo paso entre dos horas distintas. Si es así lo que tendrias que hacer es:
vartipofloat:= Hora1-Hora2; En vartipofloat tendras como resultado la cantidad de horas y minutos que pasaron, las horas en la parte entera y los minutos en los decimales. Suerte
__________________
Suerte Alejandro |
#15
|
||||
|
||||
listo, gracias a todos por responder, ahora estoy probando todo y cuando me de perfecto publico el codigo......
|
#16
|
|||
|
|||
|
#17
|
|||
|
|||
sumar meses a una fecha
ejemplo
sumarle 48 meses a una fecha o 4 años a una fecha sin tener que utilizar decode Cita:
|
#18
|
||||
|
||||
Cita:
Saludos.
__________________
Tiempo y ocasión acontecen a todos! |
#19
|
|||
|
|||
al hacer la diferencia de hroas aparece asi ,
14:00:00 - 12:00:00 = 2.00 o algo asi min:=minutesbetween(he,hs); dec:=roundto(min/60,-1); en este caso reste 5:0:0 - 6:30:0 y dio dec:1,5 pero luego necesito que ese 1,5 vuelva a 1:30:00 pm o am, como seria? ya que "dec" es decimal y tengo q pasarlo a time. gracias! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
restar fechas sql | Oraxtar | SQL | 16 | 21-01-2008 22:01:44 |
Restar fechas | Acker | Varios | 4 | 07-11-2005 14:11:51 |
Restar 2 horas... | CFPA86 | Varios | 1 | 17-10-2003 20:30:54 |
Restar horas en SQL/PLUS de ORACLE | Chojj | Oracle | 6 | 12-08-2003 15:22:25 |
restar fechas para comparar resultado | @-Soft | Conexión con bases de datos | 5 | 14-07-2003 18:33:03 |
|