FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Transformar 12 horas a 24 h..(Solucionado)
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Transformar 12 horas a 24 h..(Solucionado)
Posted: Tue May 27, 2014 08:59 PM
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 (fw): Select all Collapse
//------------------------------------------------------------------------------
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.
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM
Re: Transformar 12 horas a 24 h..
Posted: Tue May 27, 2014 10:19 PM

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
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Transformar 12 horas a 24 h..
Posted: Wed May 28, 2014 12:01 AM
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.
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Transformar 12 horas a 24 h..
Posted: Wed May 28, 2014 12:50 PM
Code (fw): Select all Collapse
   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
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Transformar 12 horas a 24 h..(Solucionado)
Posted: Wed May 28, 2014 03:12 PM
karinha wrote:
Code (fw): Select all Collapse
   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.

Continue the discussion