Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Nombre del dia (https://www.clubdelphi.com/foros/showthread.php?t=50596)

chona 22-11-2007 17:16:22

Nombre del dia
 
Hola amigos, alguno sabe de una función (delphi 5) que tome como parámetro una fecha y devuelva como resultado el nombre del dia. Ej.
Func_nombre(22/11/2007)=Jueves
Desde ya muchísimas gracias

jhonny 22-11-2007 17:31:31

Se de una que te devuelve el numero del dia de la semana...

DayOfTheWeek

dec 22-11-2007 17:34:51

Hola,

No recuerdo que exista una función así, y, de existir, retornaría los días "en inglés". Pero, no parece demasiado complicado preparar una función que tal vez te sirviera:

Código Delphi [-]
function GetDayName(dateTime: TDateTime) : string;
begin
  case DayOfWeek(dateTime) of
    1: result := 'Domingo';
    2: result := 'Lunes';
    3: result := 'Martes';
    4: result := 'Miércoles';
    5: result := 'Jueves';
    6: result := 'Viernes';
    7: result := 'Sábado';
  end;
end;

Ejemplo de llamada a la función:

Código Delphi [-]
begin
  // Muestra el nombre del día actual
  ShowMessage( GetDayName(Now()) );
end;

jhonny 22-11-2007 17:37:54

Podemos lograr lo que quieres asi:

Código Delphi [-]
function DiaDeLaSemana(Fecha :TDateTime) :String;
const
    Dias :array[1..7] of string = ('Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo');
begin
  Result := Dias[DayOfTheWeek(Fecha)];
end;

Nota: Recuerda que DayOfTheWeek en Delphi5 esta en la unidad DateUtil y a partir de Delphi6 en la unidad DateUtils ;).

Neftali [Germán.Estévez] 22-11-2007 17:46:14

También esta otra:

Código Delphi [-]
  Str := FormatDateTime('dddd', Now());
  MessageDlg('Día: ' + Str, mtInformation, [mbOK], 0);

jhonny 22-11-2007 17:47:37

Allí tienes tres maneras de hacer lo que quieres :). No habia visto que dec y Neftali tambien habian respondido :).

ixMike 24-11-2007 15:20:10

Cita:

Empezado por jhonny (Mensaje 247738)
Podemos lograr lo que quieres asi:

Código Delphi [-]function DiaDeLaSemana(Fecha :TDateTime) :String;
const Dias :array[1..7] of string = ('Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo');
begin Result := Dias[DayOfTheWeek(Fecha)]; end;


Nota: Recuerda que DayOfTheWeek en Delphi5 esta en la unidad DateUtil y a partir de Delphi6 en la unidad DateUtils ;).


Si mal no recuerdo (o quizás también dependa de la versión de Delphi) la funmción DayOfTheWeek devuelve un número de 0 a 6. Entonces se tendría que cambiar la matriz a Dias: array[0..6] of string...


Saludos.

jhonny 24-11-2007 16:38:32

Cita:

Empezado por ixMike (Mensaje 248188)
Si mal no recuerdo (o quizás también dependa de la versión de Delphi) la funmción DayOfTheWeek devuelve un número de 0 a 6. Entonces se tendría que cambiar la matriz a Dias: array[0..6] of string...


Saludos.

Bueno, el ejemplo que coloque anteriormente lo probe antes de publicarlo en su momento y me devolvio bien los dias, sin embargo a raiz de tu sugerencia busque en la ayuda y claramente dice que la cosa va de 1 a 7...

Cita:

Description

Call DayOfTheWeek to obtain the day of the week represented by a specified TDateTime value. DayOfTheWeek returns a value between 1 and 7, where 1 indicates Monday and 7 indicates Sunday.
Incluso la función DayOfWeek que propone dec, tambien va de 1 a 7

Cita:

DayOfWeek is a read-only Integer property that contains the Day of the Week for the Indy timestamp. DayOfWeek will contain a value in the range 1..7.

Nota: La diferencia entre las dos funciones es que DayOfWeek comienza en Domingo y DayOfTheWeek Comienza en Lunes.

cHackAll 24-11-2007 16:55:07

Ah, pues creo que nos estamos haciendo demasiado problema... de paso tengo mis dudas con esas funciones en versiones inferiores de d6;

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
const Dias: array [0..6] of PChar = ('Sábado', 'Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes');
begin
 Caption := Dias[Trunc(Now) mod 7];
end;

Funcionaría hasta en d1 o 2 ??? :rolleyes:

Saludos

Drahcir 10-12-2007 12:42:33

Si la fecha la extráes de una consulta SQL lo mejor es traer el nombre del día desde la misma consulta con un:

Código SQL [-]
Select
  To_Char(Fecha,'Day') Dia_Semana


La franja horaria es GMT +2. Ahora son las 04:01:48.

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