![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como restar fechas
Como se puede restar fechas, tengo dos campos TTime y necesito saber la diferencia y grabarlo en un campo del mismo tipo.
El único modo que encuentro de grabarlo es FieldByName('CampoHora').asDateTime <- Pero tb me guarda la fecha con el año 1889 guardo el format hh:nn:ss pero la resta no es buena. ¿Alguna solución? |
#2
|
||||
|
||||
Es bastante confuso tu enunciado, pero: Si quieres trabajar con fechas, solo tienes que darle importancia a la parte entera de los tipos TDateTime, si quieres trabajar exclusivamente con horas, minutos y segundos, tienes que utilizar la parte decimal del TDateTime. La fecha 0 es '30/12/1899' pero eso a ti no te importa si trabajas con horas.
Las funciones aritméticas de este tipo de datos, te garantizo que funcionan en forma correcta. ¿Porque no nos aclaras tu duda? Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#3
|
|||
|
|||
El caso que se me representa es el siguiente:
- Una Variable Hora (VbleHora) del tipo TTime Le asigno el valor de un campo Hora VbleHora= Tabla.FieldByName('CampoHora').asDateTime; (uso DateTime pq no existe el asTtime) repito la operación con una 2º variable y otro segundo campo Hora VbleHora2=Tabla.FieldbyName('CampoHora2').asDateTime; En una variable del tipo de datos TTime guardo la diferencia de la vblehora2 menos vblehora Quedando: VbleResultadoHora=VbleHora2-VbleHora el resultado de esta variable lo guardo en un 3º campo del tipo Hora con el formato: "hh:nn:ss" Si por ejemplo tengo estos datos: VbleHora -> 12:00:33 VbleHora2-> 12:00:34 El restultado me da: VbleResultadoHora -> 00:00:00 Porque hay solamente 512 Milisegundos de diferencia ¿Cómo puedo visualizar correctamente el dato en el 3º campo? Esperando que ahora pueda comprender mejor mi duda, les agradezco de antemano su ayuda Gracias |
#4
|
||||
|
||||
Buenas
![]() Var HoraInicio_Date : TDateTime; HoraFin_Date : TDateTime; HoraResultado_Date : TdateTime; Fecha :String; HoraInicio_Str : String; HoraFin_Str : String; Begin //Primero me guardo un String con la Fecha que luego usare Fecha := FormatDateTime('dd/mm/yyyy', now); //Guardamos las fechas en el formato que queremos HoraInicio_str := FormatDaeTime('hh:nn:ss', horaInicio_Date); HoraFin_str := FormatDaeTime('hh:nn:ss', horaFin_date); //Ahora movemos los Strings de nuevo a los DatTime //De manera que los Milisegundos iguales en ambos //al igual que el dia, mes y año HoraInicio_Date := StrToDate(Fecha + ' '+HoraInicio_Str); HoraFin_Date := StrToDate(Fecha + ' '+HoraFin_Str); //Restamos ambos HoraResultado_Date := HoraFin_Date - HoraInicio_Date; // Si mostramos su valor en caso de que los iniciales fuesem // 10/09/2003 10:14:25 430 y 10/09/2003 10:14:26 110 //Al hacer un formatDateTime con mascara 'hh:nn:ss' seria algo así ShowMessage(FormatDateTime('hh:nn:ss', HoraResultado_date)); //Seria 00:00:01 end; Esta en muchos pasos para que se vea claro pero lo puedes resumir... Begin HoraResultado_date := StrToDate(FormatDateTime(Fecha+' '+'hh:nn:ss', HoraInicio_Date )) - StrToDate(FormatDateTime(Fecha+' '+'hh:nn:ss', HoraFin_Date )) End; Espero que te sirva de ayuda y si tienes algún problema no dudes en preguntar, que aquí estamos todos para ayudarnos... |
#5
|
|||
|
|||
lo que yo hice es bastante simple:
procedure resta(hora1,hora2:TTime):TTime; begin result:=TimeOf(hora2)-TimeOf(hora1); end; .... la función TimeOf te extrae, solamente la hora del formato datetime el resultado ya lo puedes emplear por ejemplo en interbase existe un tipo de datos time y lo puedes almacenar tranquilamente ahi. Espero te sirva saludos desde Tarija, Bolivia
__________________
Bismarito hoy, que tan bueno quiero ser!! |
#6
|
|||
|
|||
No encuentro esta función timeof en el delphi, uso el delphi 5. puede ser que sea de una versión posterior?
Gracias |
#7
|
|||
|
|||
Consulta... Urgente... al menos para mi lo es :)
Buenas noches, ya que encontrè este hilo de fechas aprovecho a plantear mi duda.
Tengo que calcular la cantidad de dias transcurridos entre una fecha y otra, y luego esa cantidad de dias multiplicdarla por un valor... por ejemplo: (07-12-2007) - (05-12-2007)... esto sería igual a 2 días... luego esos dos dias los multiplico por...x... pero bueno, esa parte es facil jeje cómo hago para obtener ese 2 ??? alquien tiene idea? Gracias! |
#8
|
||||
|
||||
Puedes usar directamente la función "DaysBetween"...
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#9
|
|||
|
|||
Restar Fechas
buenas tardes
amigos tengo un prblema, he navegado por todos los foors de delphi y no entiendo es nada... tengo una base de datos hecha en access y conectada a delphi 7 meiante componentes ADO, lo que quiero es hacer una forma que me maneje la cuarentena de los porductos (medicamentos), osea que mi tabla cuarentena en accses tiene los campos, nombremed, f_caducidad, donde la f_caducidad es la fecha de vencimiento que es la que se inserta a memoento de ingresar el medicamento a la base de datos la cual es la que quiero restar a un datetimepicker ((fecha del sistema)) y poner condiciones qe me los liste justo 20 dias antes de su vencimiento. me explicaron que con parametros se podia pero no consigo hacerlo... no coloco lineas de codigos porque hasta el momento no he dado con el codigo posdata: soy novato solo tengo 2 semanas en esto y no entiendoo nada |
#10
|
||||
|
||||
Hola luisraad, bienvenido a clubdelphi, por favor, como todos los nuevos usuarios, es aconsejable que leas nuestra guía de estilo, gracias por tu colaboración.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Veo que ya has creado un nuevo hilo para el tema, perfecto
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#12
|
|||
|
|||
ya todo bien cero rollo.. es que no sabia como postear una pregunta
|
![]() |
|
|
![]() |
|