PDA

Ver la Versión Completa : Descomponer Fecha


darkborrego
26-06-2010, 00:37:10
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 (http://www.delphibasics.co.uk/RTL.asp?Name=DecodeDate)
DecodeDateTime (http://www.delphibasics.co.uk/RTL.asp?Name=DecodeDateTime)
EncodeDate (http://www.delphibasics.co.uk/RTL.asp?Name=EncodeDate)
EncodeDateTime (http://www.delphibasics.co.uk/RTL.asp?Name=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 (http://www.microsoft.com/downloads/details.aspx?familyid=258AA5EC-E3D9-4228-8844-008E02B32A2C&displaylang=es)para ver archivo hlp en windows 7....

darkborrego
26-06-2010, 01:08:58
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?


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
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:

....
var Year, Month, Day: Word;
...

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


Método 2:


....
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
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?


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