Ir al contenido


Foto

[RESUELTO] Duda de niño de primaria... (Sumar Lapso de Tiempo)


  • Por favor identifícate para responder
11 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 28 julio 2010 - 03:47

Compañerit@s del foro:

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.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 julio 2010 - 03:53

Y como es que te dan ese tiempo que debes de sumar, mas específico, en que formato.

Salud OS
  • 0

#3 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 28 julio 2010 - 03:54

Utiliza la funcion IncDay



delphi
  1. var Date: TDateTime;
  2.  
  3. EncodeDate(Date, 2010, 1, 29) //Enero 29, 2010
  4. IncDay(Date, -1)// o mas


  • 0

#4 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 28 julio 2010 - 03:59

No ovides agrgegar la unit DateUtils
  • 0

#5 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

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
  1. var Date: TDateTime;
  2.  
  3. EncodeDate(Date, 2010, 1, 29) //Enero 29, 2010
  4. IncDay(Date, -1)// o mas



Lo probaré, gracias.

No ovides agrgegar la unit DateUtils

Unidad agregada actualmente...

Archivos adjuntos


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 julio 2010 - 04:59

Pues yo creo que debes de partir la solución en varias partes,



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   Fecha,FechaAdd: TDateTime;
  4. begin
  5.   Fecha := Now;
  6.   case combobox1.ItemIndex of
  7.       0: FechaAdd := IncMinute(Fecha,strtoint(edit1.Text));  //Minutos
  8.       1: FechaAdd := IncHour(Fecha,strtoint(edit1.Text));    //Horas
  9.       2: FechaAdd := IncDay(Fecha,strtoint(edit1.Text));    //Dias
  10.       3: FechaAdd := IncDay(Fecha,strtoint(edit1.Text)*7);  //Semanas
  11.       4: FechaAdd := IncMonth(Fecha,strtoint(edit1.Text));  //Meses
  12.       5: FechaAdd := IncYear(Fecha,strtoint(edit1.Text));  //Años
  13.   end;
  14.   ShowMessage(DateTimetoStr(FechaAdd));
  15. end;



Salud OS
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 julio 2010 - 05:04

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
  • 0

#8 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

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...  :tongue:
  • 0

#9 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 29 julio 2010 - 08:06

Pues yo creo que debes de partir la solución en varias partes,



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   Fecha,FechaAdd: TDateTime;
  4. begin
  5.   Fecha := Now;
  6.   case combobox1.ItemIndex of
  7.       0: FechaAdd := IncMinute(Fecha,strtoint(edit1.Text));  //Minutos
  8.       1: FechaAdd := IncHour(Fecha,strtoint(edit1.Text));    //Horas
  9.       2: FechaAdd := IncDay(Fecha,strtoint(edit1.Text));    //Dias
  10.       3: FechaAdd := IncDay(Fecha,strtoint(edit1.Text)*7);  //Semanas
  11.       4: FechaAdd := IncMonth(Fecha,strtoint(edit1.Text));  //Meses
  12.       5: FechaAdd := IncYear(Fecha,strtoint(edit1.Text));  //Años
  13.   end;
  14.   ShowMessage(DateTimetoStr(FechaAdd));
  15. 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]"...
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 julio 2010 - 08:25

Ah que bien, un hilo más a los casos de éxito de DA :)

Salud OS
  • 0

#11 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

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.



delphi
  1. procedure TFrmDtllMdsOpr.dbcmbboxTpoLpsChange(Sender: TObject);
  2. var
  3.   Ahora, Entonces : TDateTime;
  4. begin
  5.  
  6.   Ahora := dbdtetmepckrFchInc.DateTime;
  7.  
  8.   with dbcmbboxTpoLps do
  9.   begin
  10.     case ItemIndex of
  11.       0 : Entonces := IncMinute(Ahora, StrToInt(dbedtLpsHch.Text));
  12.  
  13.       1 : Entonces := IncHour(Ahora, StrToInt(dbedtLpsHch.Text));
  14.  
  15.       2 : Entonces := IncDay(Ahora, StrToInt(dbedtLpsHch.Text));
  16.  
  17.       3 : Entonces := IncWeek(Ahora, StrToInt(dbedtLpsHch.Text));
  18.  
  19.       4 : Entonces := IncMonth(Ahora, StrToInt(dbedtLpsHch.Text));
  20.  
  21.       5 : Entonces := IncYear(Ahora, StrToInt(dbedtLpsHch.Text));
  22.     end;
  23.  
  24.     dbdtetmepckrFchFnl.Date := Entonces;
  25.     dbdtetmepckrHraFnl.Time := Entonces;
  26.  
  27.   end;
  28. end;


  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 julio 2010 - 09:53

jejejeje, vaya, no me fijé que si existía la función IncWeek(), gracias por el update (y)

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.