1

Konu: saat toplama

selmlar;
m.lcSaat1 = "11:10"
m.lcSaat2 = "11:35"
? m.lcSaat1+m.lcSaat2
sonuç:  22:45
bu 2 saatin saat toplamını bir türlü bulamadım yardımcı olabilecek varmı?

Bilmediğin Neyse Yanıldığındır.

2

Re: saat toplama

Belki bu yöntem işine yarar:

Visual Fox Pro
*!*    Author: Ugur YILMAZ

 
CLEAR
LOCAL lnStartTime, lnStopTime
 
lnStartTime = Seconds()
 
FOR lni = 1 TO 40000000
 
ENDFOR
 
lnStopTime = Seconds()
 
? "Start Time = ", TimeParse(lnStartTime)
? "Stop  Time = ", TimeParse(lnStopTime)
? "Total Time = ", TimeParse(lnStartTime+lnStopTime)
? "Difference = ", TimeParse(lnStopTime-lnStartTime)
Function TimeParse
    Lparameters tnElapsedTime
    Local lnHour, lnMinute, lnSeconds, lnMiliSeconds, lcTimeString
 
    lnHour             = Int(tnElapsedTime / 3600)
    lnMinute         = Int(((tnElapsedTime / 3600) - lnHour) * 60 )
    lnSeconds        = Int((((((tnElapsedTime / 3600) - lnHour) * 60) - lnMinute)) * 60)
    lnMiliSeconds    = Int((((((((tnElapsedTime / 3600) - lnHour) * 60) - lnMinute)) * 60) - lnSeconds) * 1000)
 
    lcTimeString =             Padl(Alltrim(Str(lnHour)), 2,'0') ;
        +":"+    Padl(Alltrim(Str(lnMinute)),2,'0') ;
        +":"+    Padl(Alltrim(Str(lnSeconds)),2,'0') ;
        +":"+    Padl(Alltrim(Str(lnMiliSeconds)),3,'0')
    Return(lcTimeString )
Endfunc
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: saat toplama

Halen sorunum çözülmedi. 
Saatleri Seconds() tipine çeviremiyorum.
Çevirsem bu kod bendede var.

Bilmediğin Neyse Yanıldığındır.

4

Re: saat toplama

Gun ayri:

Visual Fox Pro
lnSeconds = (Ctot(m.lcSaat1)-Ctot('0')) + (Ctot(m.lcSaat2)-Ctot('0'))

lcDays = Iif( m.lnSeconds > 86400, Textmerge('<< INT(m.lnSeconds / 86400) >>:'), '')
? m.lcDays + Transform(Substr(Ttoc( Ctot('0') + m.lnSeconds % 86400, 1 ), 9, 4), '@R 99:99')

Ya da gunsuz:

Visual Fox Pro
lnSeconds = (Ctot(m.lcSaat1)-Ctot('0')) + (Ctot(m.lcSaat2)-Ctot('0'))

? TEXTMERGE('<< INT(m.lnSeconds / 3600) >>:<< int((m.lnSeconds % 3600)/60) >>')

Eger lcSaat1 veya lcSaat2 23:59 uzerindeyse biraz farkli kod gerekecek.

5

Re: saat toplama

Ugur,
Boyle biraz daha kisa olur:)

Visual Fox Pro
lnHour           = Int(m.tnElapsedTime / 3600)

    lnMinute         = Int(m.tnElapsedTime % 3600 / 60 )
    lnSeconds        = Int(m.tnElapsedTime % 60)
    lnMiliSeconds    = int((m.tnElapsedTime - Int(m.tnElapsedTime))*1000)

6 Son düzenleyen, ugurlu2001 (20.01.2010 15:39:54)

Re: saat toplama

Ramazan bu oldu galiba...

Üstat senden fırsat kalmamış  smile


Visual Fox Pro
LOCAL lcTime1 As String, lcTime2 As String 

 
lcTime1 = "22:50"
lcTime2 = "19:50"
 
? TimeParse2Char(lcTime1,lcTime2)
 
FUNCTION TimeParse2Char
    PARAMETERS tcTime1, tcTime2
    LOCAL lnParse1_1 As Int, lnParse1_2 As Int
 
    LnParse1_1 = Val(Substr(tcTime1,1,2))
    LnParse1_2 = Val(Substr(tcTime1,4,2))
 
    LnParse2_1 = Val(Substr(tcTime2,1,2))
    LnParse2_2 = Val(Substr(tcTime2,4,2))
 
*!*        Return(Chrtran(Alltrim(Str(((lnParse1_1+lnParse2_1) + Int((lnParse1_2+lnParse2_2)/60),5,2)),",",":")
 
    Return(Alltrim(Str(((lnParse1_1+lnParse2_1) + Int((lnParse1_2+lnParse2_2)/60))))+":"+Alltrim(Str((Mod((lnParse1_2+lnParse2_2),60)))))
 
 
?Mod((50+40),60)
 
ENDFUNC
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

7

Re: saat toplama

Çok teşekkürler. tüm kodlar işimi gördü.

Bilmediğin Neyse Yanıldığındır.

8 Son düzenleyen, ugurlu2001 (20.01.2010 15:47:46)

Re: saat toplama

Ramazan kodun son halini düzenledim. Önceki hatalıydı. Öncekini kullanma. Şu anda olanı kullan.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

9

Re: saat toplama

Ugur,
Boyle biraz daha kisa olur:)

Visual Fox Pro
lnHour           = Int(m.tnElapsedTime / 3600)

    lnMinute         = Int(m.tnElapsedTime % 3600 / 60 )
    lnSeconds        = Int(m.tnElapsedTime % 60)
    lnMiliSeconds    = int((m.tnElapsedTime - Int(m.tnElapsedTime))*1000)

Not aldım Üstat smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

10

Re: saat toplama

Sanırım şu işini görür:
Char2Min  Saati dakikaya dönüştürüyor.
Min2Char  Dakikaları saate dönüştürüyor. (opsiyonel 2 parametresi daha var)
Örnek: Min2Char(Char2Min("11:10") + Char2Min("11:35") )  -> "22:45"

Kodlar canli bir programdan copy/paste ile aktarılmışdır. Biraz ayıklaman gerekir.

Visual Fox Pro
*************************************

* Char2Min
*************************************
FUNCTION Char2Min( cTxt )
  LOCAL lMinute, nLen, nPos, cSaat, nCommaPos
  LOCAL nSaat, nDak
 
  IF LEN(cTxt) == 4 && :'siz saat degeri
    nSaat = VAL(SUBSTR(cTxt,1,2))
    nDak  = VAL(SUBSTR(cTxt,3,2))
  ELSE
    nLen = LEN( cTxt )
    * Saat'in icinden , char.lerini cikar
    cSaat = SUBSTR(cTxt, 1, nLen-3)
    nCommaPos = 1
    DO WHILE nCommaPos > 0
      nCommaPos = AT(",", cSaat)
      cSaat = SUBSTR(cSaat, 1, nCommaPos-1) + SUBSTR(cSaat, nCommaPos+1, LEN(cSaat)-nCommaPos)
    ENDDO
    nSaat = VAL( cSaat)
    * dakikayi al
    nPos = AT(":", cTxt)
    nDak  = VAL(SUBSTR(cTxt, nPos+1, 2))
  ENDIF
 
  lMinute = (nSaat * _1_HRS) + nDak
 
  RETURN( lMinute )
ENDFUNC

Visual Fox Pro
********************************************************************

* Min2Char
********************************************************************/
FUNCTION Min2Char( nMinuten , BigTime, WithComma )
  LOCAL cTxt
  LOCAL tam_saat, kal_dak
 
  * Eksi(-) saat olursa -x:xx formatinda (sadece fark hesaplarinda)
  IF nMinuten < 0
    nMinuten = ABS(nMinuten)
    IF nMinuten > 599  && groesser als 9:59
      RETURN "**:**"
    ENDIF
    tam_saat = INT(nMinuten / _1_HRS )
    kal_dak  = nMinuten - (tam_saat * _1_HRS )
 
    cTxt = "-" + STR(tam_saat,1) + ":" + STR(kal_dak,2)
    cTxt = STRTRAN( cTxt, " ", "0" )
    RETURN cTxt
  ENDIF
 
  tam_saat = INT(nMinuten / _1_HRS )
  kal_dak  = nMinuten - (tam_saat * _1_HRS )
 
  * BigTime isteniyorsa (boy = 12 char.)
  IF BigTime
    IF !WithComma && bigtime'da saatde virgul yok
      **0'lar yerine * atiyor
      cTxt = TRANSFORM(tam_saat,"999999999") + ":" + TRANSFORM(kal_dak,"99")
      cTxt = ALLTRIM(cTxt)
      cTxt = STRTRAN( cTxt, " ", "0" )
      IF LEN(cTxt) == 4
        cTxt = "0" + cTxt
      ENDIF
    ELSE && bigtime'da saatde virgul var
      cTxt = TRANSFORM(tam_saat,"9,999,999") + ":" + TRANSFORM(kal_dak,"99")
      cTxt = ALLTRIM(cTxt)
      cTxt = STRTRAN( cTxt, " ", "0" )
      IF LEN(cTxt) == 4
        cTxt = "0" + cTxt
      ENDIF
    ENDIF
    RETURN cTxt
  ENDIF
 
  * Ansonsten kommt ein normales ZeitFormat zum Zuge
  IF nMinuten > 5999
    cTxt = "**:**"
  ELSE
    cTxt = TRANSFORM(tam_saat,"99") + ":" + TRANSFORM(kal_dak,"99")
    cTxt = STRTRAN( cTxt, " ", "0" )
  ENDIF
  RETURN( cTxt)
ENDFUNC
Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.