Transformar 12 horas a 24 h..(Solucionado)

Post Reply
ACC69
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm
Contact:

Transformar 12 horas a 24 h..(Solucionado)

Post by ACC69 »

Hola buenas tardes aqui de nuevo, con otra pregunta.

Me surgio un inconveniente con formato de hora,resulta que al procesar asistencias,me da resta de mas de retardos,ya que logre hacer mi reporte procesando asistencias y saber que empleado checo o no!...ahora me surge un inconveniente en la base de datos de movimientos , tengo dos turnos, uno de mañana y otro segundo turno de tarde,bueno en mi campo todos los registros estan como quedan.

Turno de mañana "09:00 AM" ---> Aqui no hay problema, porque es de mañana y resta normal los retardos y horas trabajadas
Turno de tarde "01:00 PM" ---> me resta de mas como si fuera de madrugada cuando en realidad es de tarde :?

Esta como queda asi registrado en la base de datos, pero el turno de la tarde me lo toma como si fuera "1:00 pm" de madrugada, porque sera..!.

Ahora para no hacerlo uno por uno,cambiarlo manualmente de todos los que se registraron como convertirlo que en lugar de "01:00 PM" me lo transforme "13:00 PM" para que asi me reste normal los retardos y horas trabajadas, o en su caso, si hay otra forma de restar en ese formato "01:00 pm".

Tengo esa sencilla funcion que converti al formato AM ó PM :

Code: Select all | Expand

//------------------------------------------------------------------------------
FUNCTION AMPM(TIMEf)
 IF VAL(TIMEf) < 12
     TIMEf += " am"
 ELSEIF VAL(TIMEf) = 12
     TIMEf += " pm"
 ELSE
     TIMEf := STRZERO(VAL(TIMEf) - 12, 2) + SUBSTR(TIMEf, 3) + " pm"
 ENDIF
RETURN (TIMEf)


Pero ahora como lo hago a la inversa o sea de "01:00 PM" a "13:00 PM" o que haya forma de restar, considerando que es formato 12 horas ...se puede??

Espero me puedan ayudar con este detalle,que es lo ultimo que me queda por ese detalle.

Saludos
Atte: Adrian C. C.
Last edited by ACC69 on Wed May 28, 2014 3:13 pm, edited 1 time in total.
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Transformar 12 horas a 24 h..

Post by Francisco Horta »

Adrian,

se me ocurre que si UPPER(RIGHT(TIMEf,2)) == 'PM'
entonces sumale 12 a tu hora algo asi,

cHora := VAL(LEFT(TIMEf,2)) + 12
cTime := STR(cHora,2) + SUBSTR(TIMEf,3,3)

Saludos
____________________
Paco
ACC69
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm
Contact:

Re: Transformar 12 horas a 24 h..

Post by ACC69 »

Francisco Horta wrote:Adrian,

se me ocurre que si UPPER(RIGHT(TIMEf,2)) == 'PM'
entonces sumale 12 a tu hora algo asi,

cHora := VAL(LEFT(TIMEf,2)) + 12
cTime := STR(cHora,2) + SUBSTR(TIMEf,3,3)

Saludos


Gracias Francisco por tu interés,haré la prueba esta instrucción y te comento.

Saludos.
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Transformar 12 horas a 24 h..

Post by karinha »

Code: Select all | Expand


   If "PM" $ cHora .AND. SubStr(cHora,1,2) != "12"
      cHora := Str(Val(SubStr(cHora,1,2))+12,2)+SubStr(cHora,3,7)
   Endif
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
ACC69
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm
Contact:

Re: Transformar 12 horas a 24 h..(Solucionado)

Post by ACC69 »

karinha wrote:

Code: Select all | Expand


   If "PM" $ cHora .AND. SubStr(cHora,1,2) != "12"
      cHora := Str(Val(SubStr(cHora,1,2))+12,2)+SubStr(cHora,3,7)
   Endif
 



Gracias Francisco Horta y Karinha, me funciono de maravilla, estuve haciendo la funcion,transformando de "01:00 PM" a "01:00 PM" aunque ortodoxa,de esta manera y ver si tiene alguien mejorado la funcion.

DO CASE
CASE cHora="01:00 PM"
cHora := "13:00 PM"
CASE cHora="02:00 PM"
cHora := "13:00 PM"

...... Y asi sucesivamente,pero en algunos casos, me marcaba error y otros no se grababa los reistros ..y mejor me fui con la funcion de ustedes dos de ambos.


Asi que gracias de nuevo a ambos,muy amable con la rutina.

Saludos y buen dia.

Atte: Adrian C. C.
Post Reply