Ver Mensaje Individual
  #17  
Antiguo 15-12-2009
Vicente Ivan Vicente Ivan is offline
Registrado
 
Registrado: sep 2006
Posts: 2
Reputación: 0
Vicente Ivan Va por buen camino
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:
Empezado por Lepe Ver Mensaje
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.



Para esto no hay solución inmediata, pero puedes apoyarte en las funciones mencionadas, o hacer el cálculo tu mismo:
Código Delphi [-]
var f1, f2 : TDatetime;
      h,m,s:word;
begin
 
s := seconsbetween(f1,f2);
h := s div 3600 ;
m := (s mod 3600) div 60; // el resto de la división anterior:
s := (s mod 3600) mod 60;

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
Responder Con Cita