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ı?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Kodlama ve Komutlar » 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ı?
Belki bu yöntem işine yarar:
*!* 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
Halen sorunum çözülmedi.
Saatleri Seconds() tipine çeviremiyorum.
Çevirsem bu kod bendede var.
Gun ayri:
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:
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.
Ugur,
Boyle biraz daha kisa olur:)
lnHour = Int(m.tnElapsedTime / 3600)
lnMinute = Int(m.tnElapsedTime % 3600 / 60 )
lnSeconds = Int(m.tnElapsedTime % 60)
lnMiliSeconds = int((m.tnElapsedTime - Int(m.tnElapsedTime))*1000)
Ramazan bu oldu galiba...
Üstat senden fırsat kalmamış
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
Çok teşekkürler. tüm kodlar işimi gördü.
Ramazan kodun son halini düzenledim. Önceki hatalıydı. Öncekini kullanma. Şu anda olanı kullan.
Ugur,
Boyle biraz daha kisa olur:)Visual Fox ProlnHour = 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
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.
*************************************
* 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
********************************************************************
* 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
fox4um » Kodlama ve Komutlar » saat toplama