Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 04-03-2012
Leviatan Leviatan is offline
Miembro
 
Registrado: oct 2005
Posts: 56
Poder: 19
Leviatan Va por buen camino
En primer lugar gracias por sus comentarios.

A ver si me explico.

Estoy desarrollando una aplicación que, entre otras cosas, lee datos separados por "pipes" en un socket TCP. Entre esos datos me viene la fecha y la hora en esta forma: ...|...|20120117074642|...|... (sería añomesdiahoraminutosegundo).

Lo primero que hago es descomponer la fecha/hora en sus partes, o sea:

Código Delphi [-]
function FormatearFechaHora(Cadena: string): string;
var
  Anio, Mes, Dia, Hora, Min, Seg: string;
  FechaHora: TDateTime;
  ...
begin
  Anio := Copy(Cadena, 1, 4);
  Mes := Copy(Cadena, 5, 2);
  Dia := Copy(Cadena, 7, 2);
  Hora := Copy(Cadena, 9, 2);
  Min := Copy(Cadena, 11, 2);
  Seg := Copy(Cadena, 13, 2);
  ...
  ...
  // Lo convierto a formato FechaHora
  FechaHora := StrToDateTime(Dia + '/' + Mes + '/' + Anio + ' ' + Hora + ':' + Min + ':' + Seg);
  ...
  ...
  // Luego devuelvo el valor en otro formato
  Result := AnsiReplaceStr(FormatDateTime('yyyy-mm-dd hh:mm:ss', FechaHora), ' ', 'T');
end;

Ahora, el meollo de la cuestión está en esta sentencia:

Código Delphi [-]
begin
  ...
  FechaHora := StrtoDateTime(Dia + '/' + Mes + '/' + Anio + ' ' + Hora + ':' + Min + ':' + Seg);"
  ...
end;
Para un equipo en el que está configurado el formato "dd/mm/yyyy" funciona de maravilla, pero cuando ejecuto la aplicación en un equipo con formato "mm/dd/yyyy", me dice que la fecha "17/01/2012 07:46:42" no es una fecha/hora válida, claro, no existe el mes "17". Luego probé colocando primero el mes y luego el día obteniendo el efecto contrario, es decir, funciona con el formato "mm/dd/yyyy" pero error en formato "dd/mm/yyyy".

La idea es que la aplicación se ajuste al formato de fecha establecido en la Configuración regional y no al revés.

Entonces, la única alternativa que se me ocurrió es poder "leer" todos los formatos de fecha que el SO me permite elegir y comparar con lo que está realmente establecido.

En mi mensaje anterior les decía por ejemplo que dos de los formatos eran "dd/MM/yyyy" y "dd/MM/yy", los cuales obviamente para Delphi son diferentes. Por eso es que preguntaba si se podía devolver "esos cinco formatos" que es mi caso, compararlos con lo que se definió efectivamente en la Configuración regional y en base a eso decirle a la aplicación que la fecha será "Dia + '/' + Mes + '/' + Anio" o "Mes + '/' + Dia + '/' + Anio" o algún otro.

Quizás ustedes tengan alguna alternativa mejor a lo que yo estoy planteando.

Bueno, espero ahora sí haber sido claro.

Saludos.

Última edición por Leviatan fecha: 04-03-2012 a las 05:12:13.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con formatos de idioma Windows 7 SAGOAN Varios 6 04-07-2011 10:37:28
Consulta con formatos de fecha pau_elx SQL 4 26-05-2011 08:13:37
convertir formatos fecha davidgaldo Varios 4 09-11-2005 15:49:35
Fecha de Windows sebas API de Windows 1 08-07-2003 18:42:20
Bloquear Fecha en Windows Gabriel A Reyes API de Windows 9 04-07-2003 14:11:14


La franja horaria es GMT +2. Ahora son las 08:13:49.


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
Copyright 1996-2007 Club Delphi