Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Descomponer Fecha (https://www.clubdelphi.com/foros/showthread.php?t=68639)

darkborrego 26-06-2010 00:37:10

Descomponer Fecha
 
Hola,

he estado buscando por el foro pero no encuentro exactamente lo que necesito. Tengo un archivo de tipo date el cual necesito descomponer en años, meses y dias, es decir, tengo por ejemplo 22/07/2010 y necesito sacar una variable dia que contenga 22, una variable mes que contenga 07 y una variable año que contenga 2010.

Estoy empezando con Delphi y no tengo mucha idea de Pascal por eso me gustaría que me ayudarais.

Muchas gracias.

ContraVeneno 26-06-2010 00:42:44

En delphi presiona F1 y busca las siguientes funciones:

DecodeDate
DecodeDateTime
EncodeDate
EncodeDateTime
Saludos.

Gamael Hdez 26-06-2010 00:52:36

a mi se me oscurre una forma rapida con el formatdatetime('dd',strtodate('22/07/2010')) ahi obtienes el 22 , formatdatetime('mm',strtodate('22/07/2010')) el 07 y formatdatetime('yyyy',strtodate('22/07/2010')) el 2010 , es una manera facil, rapida y sencilla.

darkborrego 26-06-2010 00:53:39

jeje, si, el único problema es que no puedo ver la ayuda por el Windows 7 de los...

ContraVeneno 26-06-2010 01:06:19

bueno, para eso están los enlaces... y si no, puedes bajar la herramienta para ver archivo hlp en windows 7....

darkborrego 26-06-2010 01:08:58

Cita:

Empezado por Gamael Hdez (Mensaje 368411)
a mi se me oscurre una forma rapida con el formatdatetime('dd',strtodate('22/07/2010')) ahi obtienes el 22 , formatdatetime('mm',strtodate('22/07/2010')) el 07 y formatdatetime('yyyy',strtodate('22/07/2010')) el 2010 , es una manera facil, rapida y sencilla.

Funciona perfecta esa forma, muchas gracias.


Ahora resulta que he hecho lo siguiente para poder escribir el mes en letras que es lo que necesitaba.

Como es la primera vez que trabajo con Pascal no se pasarlo a función, ¿podría alguién decirme como se pasaría a una función el siguiente código?


Código:

if formatdatetime('mm',DateTimePicker1.Date)='01' then
      begin
        recibos.MesLoc.Caption:='Enero';
        recibos.MesVis.Caption:='Enero';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='02' then
      begin
        recibos.MesLoc.Caption:='Febrero';
        recibos.MesVis.Caption:='Febrero';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='03' then
      begin
        recibos.MesLoc.Caption:='Marzo';
        recibos.MesVis.Caption:='Marzo';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='04' then
      begin
        recibos.MesLoc.Caption:='Abril';
        recibos.MesVis.Caption:='Abril';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='05' then
      begin
        recibos.MesLoc.Caption:='Mayo';
        recibos.MesVis.Caption:='Mayo';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='06' then
      begin
        recibos.MesLoc.Caption:='Junio';
        recibos.MesVis.Caption:='Junio';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='07' then
      begin
        recibos.MesLoc.Caption:='Julio';
        recibos.MesVis.Caption:='Julio';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='08' then
      begin
        recibos.MesLoc.Caption:='Agosto';
        recibos.MesVis.Caption:='Agosto';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='09' then
      begin
        recibos.MesLoc.Caption:='Septiembre';
        recibos.MesVis.Caption:='Septiembre';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='10' then
      begin
        recibos.MesLoc.Caption:='Octubre';
        recibos.MesVis.Caption:='Octubre';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='11' then
      begin
        recibos.MesLoc.Caption:='Noviembre';
        recibos.MesVis.Caption:='Noviembre';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='12' then
      begin
        recibos.MesLoc.Caption:='Diciembre';
        recibos.MesVis.Caption:='Diciembre';
      end;


ContraVeneno 26-06-2010 01:09:26

Cita:

Empezado por Gamael Hdez (Mensaje 368411)
a mi se me oscurre una forma rapida con el formatdatetime('dd',strtodate('22/07/2010')) ahi obtienes el 22 , formatdatetime('mm',strtodate('22/07/2010')) el 07 y formatdatetime('yyyy',strtodate('22/07/2010')) el 2010 , es una manera facil, rapida y sencilla.

dime tu que es más facil:

Método 1:
Código Delphi [-]
....
var Year, Month, Day: Word;
...

Year := StrToInt(FormatDateTime('yyyy', Now));
Month := StrToInt(FormatDateTime('mm', Now));
Day := StrToInt(FormatDateTime('dd', Now));
.......

Método 2:

Código Delphi [-]
....
var Year, Month, Day: Word;
...
DecodeDate(Now, Year, Month, Day);
.......

Gamael Hdez 26-06-2010 01:25:15

asi es mas facil: formatdatetime('mmmm',DateTimePicker1.Date)
ahi te pone: ENERO,FEBRERO, etc dependiendo de el numero de mes
showmessage(formatdatetime('mm',strtodate('22/02/2010')))
muestra: Febrero

Gamael Hdez 26-06-2010 01:28:17

Cita:

Empezado por darkborrego (Mensaje 368415)
Funciona perfecta esa forma, muchas gracias.


Ahora resulta que he hecho lo siguiente para poder escribir el mes en letras que es lo que necesitaba.

Como es la primera vez que trabajo con Pascal no se pasarlo a función, ¿podría alguién decirme como se pasaría a una función el siguiente código?


Código:

if formatdatetime('mm',DateTimePicker1.Date)='01' then
      begin
        recibos.MesLoc.Caption:='Enero';
        recibos.MesVis.Caption:='Enero';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='02' then
      begin
        recibos.MesLoc.Caption:='Febrero';
        recibos.MesVis.Caption:='Febrero';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='03' then
      begin
        recibos.MesLoc.Caption:='Marzo';
        recibos.MesVis.Caption:='Marzo';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='04' then
      begin
        recibos.MesLoc.Caption:='Abril';
        recibos.MesVis.Caption:='Abril';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='05' then
      begin
        recibos.MesLoc.Caption:='Mayo';
        recibos.MesVis.Caption:='Mayo';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='06' then
      begin
        recibos.MesLoc.Caption:='Junio';
        recibos.MesVis.Caption:='Junio';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='07' then
      begin
        recibos.MesLoc.Caption:='Julio';
        recibos.MesVis.Caption:='Julio';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='08' then
      begin
        recibos.MesLoc.Caption:='Agosto';
        recibos.MesVis.Caption:='Agosto';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='09' then
      begin
        recibos.MesLoc.Caption:='Septiembre';
        recibos.MesVis.Caption:='Septiembre';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='10' then
      begin
        recibos.MesLoc.Caption:='Octubre';
        recibos.MesVis.Caption:='Octubre';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='11' then
      begin
        recibos.MesLoc.Caption:='Noviembre';
        recibos.MesVis.Caption:='Noviembre';
      end;
    if formatdatetime('mm',DateTimePicker1.Date)='12' then
      begin
        recibos.MesLoc.Caption:='Diciembre';
        recibos.MesVis.Caption:='Diciembre';
      end;


queda asi:

recibos.MesLoc.Caption:=formatdatetime('mmmm',DateTimePicker1.Date);
recibos.MesVis.Caption:=formatdatetime('mmmm',DateTimePicker1.Date);

darkborrego 26-06-2010 02:16:59

Cita:

Empezado por Gamael Hdez (Mensaje 368419)
asi es mas facil: formatdatetime('mmmm',DateTimePicker1.Date)
ahi te pone: ENERO,FEBRERO, etc dependiendo de el numero de mes
showmessage(formatdatetime('mm',strtodate('22/02/2010')))
muestra: Febrero


jeje, muchísimas gracias, perfecto así ;).

Duda resuelta.


La franja horaria es GMT +2. Ahora son las 12:52:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi