[RESUELTO] Duda de niño de primaria... (Sumar Lapso de Tiempo)
#1
Escrito 28 julio 2010 - 03:47
Tengo una fecha/hora dada (contenida en un campo DateTime de MS SQLServer) y ahora hay que sumarle un lapso de tiempo 'n', dado en minutos u horas o días o semanas o meses o años.
La duda es, ¿qué o cómo sumar ésos lapsos de tiempo? Por que si me da minutos, tal vez deba convertirlos a días (minutos / días = LapsoASumar) o en días (días / minutos = LapsoASumar), obviamente la conversión no tengo problema, pero ya me puse a bucear en la ayuda de Delphi y una de dos, o no sé buscar o no hay documentación en éste tema...
¿Alguna idea? Gracias de antemano.
#2
Escrito 28 julio 2010 - 03:53
Salud OS
#3
Escrito 28 julio 2010 - 03:54
var Date: TDateTime; EncodeDate(Date, 2010, 1, 29) //Enero 29, 2010 IncDay(Date, -1)// o mas
#4
Escrito 28 julio 2010 - 03:59
#5
Escrito 28 julio 2010 - 04:11
Y como es que te dan ese tiempo que debes de sumar, mas específico, en que formato.
Salud OS
OK, en un DBEdit que corresponde a un campo entero y en un JvDBComboBox que me indica Minuto (s), Hora (s), Día (s), Semana (s), Mes (es), Año (s). Algo así (véase imagen)
Utiliza la funcion IncDay
delphi
var Date: TDateTime; EncodeDate(Date, 2010, 1, 29) //Enero 29, 2010 IncDay(Date, -1)// o mas
Lo probaré, gracias.
Unidad agregada actualmente...No ovides agrgegar la unit DateUtils
Archivos adjuntos
#6
Escrito 28 julio 2010 - 04:59
procedure TForm1.Button1Click(Sender: TObject); var Fecha,FechaAdd: TDateTime; begin Fecha := Now; case combobox1.ItemIndex of 0: FechaAdd := IncMinute(Fecha,strtoint(edit1.Text)); //Minutos 1: FechaAdd := IncHour(Fecha,strtoint(edit1.Text)); //Horas 2: FechaAdd := IncDay(Fecha,strtoint(edit1.Text)); //Dias 3: FechaAdd := IncDay(Fecha,strtoint(edit1.Text)*7); //Semanas 4: FechaAdd := IncMonth(Fecha,strtoint(edit1.Text)); //Meses 5: FechaAdd := IncYear(Fecha,strtoint(edit1.Text)); //Años end; ShowMessage(DateTimetoStr(FechaAdd)); end;
Salud OS
#7
Escrito 28 julio 2010 - 05:04
Salud OS
#8
Escrito 29 julio 2010 - 07:52
Amigo Felipe.mx, me tome la libertad de modificar el título del hilo por si hubiese otras personas con la misma duda.
Salud OS
¡¡Excelente!!, así se entiende más...
#9
Escrito 29 julio 2010 - 08:06
Pues yo creo que debes de partir la solución en varias partes,
delphi
procedure TForm1.Button1Click(Sender: TObject); var Fecha,FechaAdd: TDateTime; begin Fecha := Now; case combobox1.ItemIndex of 0: FechaAdd := IncMinute(Fecha,strtoint(edit1.Text)); //Minutos 1: FechaAdd := IncHour(Fecha,strtoint(edit1.Text)); //Horas 2: FechaAdd := IncDay(Fecha,strtoint(edit1.Text)); //Dias 3: FechaAdd := IncDay(Fecha,strtoint(edit1.Text)*7); //Semanas 4: FechaAdd := IncMonth(Fecha,strtoint(edit1.Text)); //Meses 5: FechaAdd := IncYear(Fecha,strtoint(edit1.Text)); //Años end; ShowMessage(DateTimetoStr(FechaAdd)); end;
Salud OS
Pues sí, ésta es la solución al problema. Claro, por mi parte tendría que afinar algunas cosas, pero no queda nada más que agregar que un rotundísimo "[RESUELTO]"...
#10
Escrito 29 julio 2010 - 08:25
Salud OS
#11
Escrito 29 julio 2010 - 09:13
Ah que bien, un hilo más a los casos de éxito de DA
Salud OS
Just for the record, la solución terminada, funcionando y arrojando resultados más que correctos.
procedure TFrmDtllMdsOpr.dbcmbboxTpoLpsChange(Sender: TObject); var Ahora, Entonces : TDateTime; begin Ahora := dbdtetmepckrFchInc.DateTime; with dbcmbboxTpoLps do begin case ItemIndex of 0 : Entonces := IncMinute(Ahora, StrToInt(dbedtLpsHch.Text)); 1 : Entonces := IncHour(Ahora, StrToInt(dbedtLpsHch.Text)); 2 : Entonces := IncDay(Ahora, StrToInt(dbedtLpsHch.Text)); 3 : Entonces := IncWeek(Ahora, StrToInt(dbedtLpsHch.Text)); 4 : Entonces := IncMonth(Ahora, StrToInt(dbedtLpsHch.Text)); 5 : Entonces := IncYear(Ahora, StrToInt(dbedtLpsHch.Text)); end; dbdtetmepckrFchFnl.Date := Entonces; dbdtetmepckrHraFnl.Time := Entonces; end; end;
#12
Escrito 29 julio 2010 - 09:53
Salud OS