Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-05-2008
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 17
lina maria Va por buen camino
Unhappy Cambiar formato 12 Hr's a 24 Hr's

Hola amigos como estan quisiera pedir su colaboracion para ke me ayuden a solucionar un ploblema ke se me genera al hacer una aplicacion en delhi, tengo un maskedit en donde el usuario digita una hora cualkiera y selecciona si esta es am o pm, si es am la almaceno en la bd tal como esta pero si es pm tomo esta hora y le sumo 1/2 (12/24) para ke me la ponga en formato pm, el problema surge cuando kiero guardar esta hora en un pc ke tiene como formato 12 Hr's me la guarda agregandole pm a la hora ejemplo si kiero almacenar 3 de la tarde me la guarda como 3:00 pm y no como 15:00 ke es la forma como la tendria ke almacenar en la bd, les agradesco si alguno sabe alguna funcion o alguna forma de convertir esa hora a formato 24 Hr's, muchas gracias y ojala me puedan ayudar
Responder Con Cita
  #2  
Antiguo 21-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hola, a ver si esto te lo soluciona:

Código Delphi [-]
var
  Fecha: TDateTime;
  Resultado: String;

begin
  // hora a convertir
  Fecha:=StrToTime('03:00:00 pm');
  // convertir hora a string
  DateTimeToString(Resultado, 'hh:mm:ss', Fecha);

Lo que hace este ejemplo, es obligarle a formatear la hora en formato de 24h. Si no quieres mostrar los segundos, simplemente quitale ":ss" y ya esta...

Te enlazo este link donde hay mas información.

Saludos.
Responder Con Cita
  #3  
Antiguo 21-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Yo creo que debias utilizar la variable del sistema ShortTimeFormat para que en toda la aplicacion cuando trabajes con fechas uses es que tu definas.
Ponla en el evento onCreate de tu forma principal.

Código Delphi [-]
ShortTimeFormat := 'h:nn:ss';
LongTimeFormat := 'h:nn:ss';

(ahora mismo no estoy seguro, creo qye es el formato de 24h, lo puedes ver en la ayuda), cualquier cosa avisas si tienes dudas.
Saludos y espero haberte resuelto el problema.

Última edición por paladincubano fecha: 21-05-2008 a las 16:46:30.
Responder Con Cita
  #4  
Antiguo 21-05-2008
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 17
lina maria Va por buen camino
Wink Muchas Gracias

oye muchisisisisimas gracias me funciono a la perfeccion te kedo muy agradecida
Responder Con Cita
  #5  
Antiguo 21-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Cual fue el que te sirvio de las dos respuestas?
Yo he editado la mia unas cuantas veces porque lo hice a memoria y no recordaba mucho, pero ya la final es la que esta echa.
Mira.
El primer ejemplo que te pusieron esta muy bien, pero es para solo en un caso especifico. El que te pongo yo, es para cualquier tipo de hora encontrada en tu aplicacion, desde los mismos TDatetime hasta las mascaras de fecha.
Dependiendo de lo que tu quieras hacer escoge cualquiera.
En mi caso, como siempre uso un formato de fecha y hora estandar para todo, pues lo hago con la variable esa del sistema que te he puesto y asi me evito programar TODO cada vez que quiera convertir fechas u horas.
Espero te ayude.

PD: Se aplica tambien para el caso de las fechas con la variable ShortDateFormat.
Especial atencion a "h:nn:ss" es asi, con "n" para especificar los minutos, ya que la "m", es para definir formato de mes.
Una sola "n" al igual que una sola "h" te define como un numero
ejemplo: 8:06AM = "h:n" = 8:6
"h:nn"= 8:06
"hh:nn"= 08:06

Última edición por paladincubano fecha: 21-05-2008 a las 17:22:01.
Responder Con Cita
  #6  
Antiguo 22-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Cita:
Empezado por paladincubano Ver Mensaje
Cual fue el que te sirvio de las dos respuestas?
Yo he editado la mia unas cuantas veces porque lo hice a memoria y no recordaba mucho, pero ya la final es la que esta echa.
Mira.
El primer ejemplo que te pusieron esta muy bien, pero es para solo en un caso especifico. El que te pongo yo, es para cualquier tipo de hora encontrada en tu aplicacion, desde los mismos TDatetime hasta las mascaras de fecha.
Dependiendo de lo que tu quieras hacer escoge cualquiera.
En mi caso, como siempre uso un formato de fecha y hora estandar para todo, pues lo hago con la variable esa del sistema que te he puesto y asi me evito programar TODO cada vez que quiera convertir fechas u horas.
Espero te ayude.

PD: Se aplica tambien para el caso de las fechas con la variable ShortDateFormat.
Especial atencion a "h:nn:ss" es asi, con "n" para especificar los minutos, ya que la "m", es para definir formato de mes.
Una sola "n" al igual que una sola "h" te define como un numero
ejemplo: 8:06AM = "h:n" = 8:6
"h:nn"= 8:06
"hh:nn"= 08:06
Esto de cambiar las configuraciones del usuario (aun que sea local) no es recomendable, me refiero a que si el usuario lo tiene configurado para ver las fechas en formato de 12 horas no puedes ir tu y cambiárselo porque a ti te viene bien para guardar en la BD (proceso interno en tu programa). Es mejor controlar tu el "cómo" se guarda que no cambiárselo al usuario.

Saludos.
Responder Con Cita
  #7  
Antiguo 22-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Claro man, yo entiendo lo que tu dices, por eso te digo que depende de la aplicacion que estes desarrollando, en mi caso, las fechas para los clientes son transparentes y nunca interactuan con ella. Solo la controlo yo para manejar la caducidad y demas cosas en la BD. Pero nunca interactuan con ella. POr eso te digo que en mi caso me conviene mas la variable porque no tengo que estar formateando ni conviertiendo formatos.
Gracias por la aclaracion.
Saludos.
Responder Con Cita
  #8  
Antiguo 22-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Cita:
Empezado por paladincubano Ver Mensaje
Claro man, yo entiendo lo que tu dices, por eso te digo que depende de la aplicacion que estes desarrollando, en mi caso, las fechas para los clientes son transparentes y nunca interactuan con ella. Solo la controlo yo para manejar la caducidad y demas cosas en la BD. Pero nunca interactuan con ella. POr eso te digo que en mi caso me conviene mas la variable porque no tengo que estar formateando ni conviertiendo formatos.
Gracias por la aclaracion.
Saludos.
Todo claro

Saludos.
Responder Con Cita
  #9  
Antiguo 28-05-2008
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 17
lina maria Va por buen camino
Wink asi lo resolvi

hola compañeros asi fue ke resolvi el problema con:
DateTimeToString(Resultado, 'hh:mm:ss', Fecha);en resultado guardo la hora del sistema y la paso a formato 24 hr's, y ya con eso la comparo con las horas ke ingresa el usuario y las ke estan almacenadas en la bd, ya ke yo todo el codigo y lo ke esta en la bd lo manejo en formato 24 hr's asi no tengo inconveniente y es totalmente transparente para el usuario, muchas gracias por la colaboracion prestada y les debo una cerveza, cuando me gradue y trabaje se las pagare , chao y de nuevo gracias
Responder Con Cita
  #10  
Antiguo 01-06-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
mas facil

usa un datetimepicker para la hora
y FormatDateTime( horacapturada, 'HH:mm:ss'); // HH mayusculas es el formato 24:00 y nunca cambies la configuracion de un usuario, porque si por una aplicacion sencilla o no, deja de funcionar otros sistemas mas importantes mamma mia!!!

Saludos
Responder Con Cita
  #11  
Antiguo 03-06-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Cita:
Empezado por waly2k1 Ver Mensaje
usa un datetimepicker para la hora
y FormatDateTime( horacapturada, 'HH:mm:ss'); // HH mayusculas es el formato 24:00 y nunca cambies la configuracion de un usuario, porque si por una aplicacion sencilla o no, deja de funcionar otros sistemas mas importantes mamma mia!!!

Saludos
Eso ya se comentó mas arriba xD

Saludos
Responder Con Cita
  #12  
Antiguo 03-06-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Cita:
Empezado por waly2k1 Ver Mensaje
usa un datetimepicker para la hora
y FormatDateTime( horacapturada, 'HH:mm:ss'); // HH mayusculas es el formato 24:00 y nunca cambies la configuracion de un usuario, porque si por una aplicacion sencilla o no, deja de funcionar otros sistemas mas importantes mamma mia!!!

Saludos

Vamos a ver señores, cuando propuse la variable LongTimeFormat, esa variable SOLO AFECTA a la aplicacion tuya mientras este corriendo, NO TIENE NADA QUE VER con los parametros en el windows de formato de hora y por ende NO AFECTA a ninguna aplicacion aparte de la tuya. Y yo siempre recomiendo usarla, siempre que tu aplicacion no requiera de entradas de fecha por parte de los clientes ya que lo lian y lo obligan a usar un formato fijo. Usela siempre cuando su aplicacion no lo requiera respecto a interaccion con el cliente y cuando tenga que usted trabajar con muchas fechas para que no este formateando cada vez que la use.
Me entiendo??
saludos.
Responder Con Cita
  #13  
Antiguo 03-06-2008
adfa adfa is offline
Miembro
 
Registrado: may 2003
Ubicación: Montevideo-Uruguay
Posts: 119
Poder: 21
adfa Va por buen camino
Paladincubano tiene razón.
Además no hay que confundir como se muestran las fechas a como se graban, internamente el Tdatetime es un numero decimal cuya parte entera es el año,mes,día y la parte decimal las horas,minutos,segundo.
Si en la base de datos se almacena un datetime es un datetime, como se lo muestres al usuario es una cosa diferente, si aceptas el dato en datetimepicker que maneja el tdatetime comparas con ese formato y listo, en el display del componente o en los mensajes lo puedes mostrar como quieras.
Saludos
Responder Con Cita
Respuesta



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
cambiar formato de hora desve Varios 3 07-03-2008 22:33:44
cambiar formato ercrizeporta Varios 4 10-10-2007 18:02:11
Cambiar formato de fecha BlueSteel Varios 2 16-02-2005 23:49:45
Como cambiar el formato de un QRSysData en formato fecha Bitbanner Tablas planas 1 13-02-2005 12:33:26
Cambiar el formato de fecha VolaRe Varios 4 19-02-2004 21:46:16


La franja horaria es GMT +2. Ahora son las 00:58:16.


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