German Uhrzeit in Dezimalzahl

wm.chatman

Well-Known Member
Licensed User
Longtime User
Ok danke dir. jetzt habe ich dies verstanden. Danke Dir.:)
Bin auch kein EXPERT, wie oben angegeben. Ehrlich gesagt mache ich sehr wenig mit B4A. Gehe nur Arbeiten und Arbeiten usw. kenne seit meine Frau verstorben ist nichts anderes. UND, ich bin auch SEHR Dankbar für jede Hilfe die mir entgegen kommt.
 
Last edited:

superscope

Member
Licensed User
Longtime User
Nicht zu danken.Gerne falls du lösung findest für dezimal umrechnen möchte ich auch gerne wissen. Bin auch anfänger mit Basic4android :)
 

wm.chatman

Well-Known Member
Licensed User
Longtime User
Hier eine PDF dezimalstunden-tabelle. Der letzte eintrag der nicht vorhanden ist wäre: Minutenwert 60 / Dezimalstundenwert 1,00 müsste nachgetragen werden.

Hoffe dies hilft weiter. Könnten wir dies als Microsoft Office Excel datei in das programm mit einbinden, und diese zu einen Dezimal Stunden ergebniss führen ?
falls ja, wie würde dies gehen?

Danke Sehr
William
 

Attachments

  • dezimalstunden-tabelle.zip
    36.1 KB · Views: 361
Last edited:

klaus

Expert
Licensed User
Longtime User
Mit dieser Routine könnt Ihr ein Zeitdauer in Dezimalstunden umrechenen.
B4X:
'Rechnet eine Zeitdauer als String in eine Dezimalzahl um
'Beispiele:
'DezimalStunden("8:45", 3) ergibt 8.75
'DezimalStunden("8:47", 3) ergibt 8.783
'DezimalStellen = -1  ohne Abrundung
'DezimalStunden("8:47", -1) ergibt 8.783333333333333
Sub DezimalStunden(Zeit As String, DezimalStellen As Int) As Double
    Dim st(2) As String
    Dim s, m , d As Double
    
    st = Regex.Split(":", Zeit)  ' zerteilt den String in Stunden und Minuten
    s = st(0)           ' Stunden als Zahl
    m = st(1)           ' Minuten als Zahl
    d = s + m / 60      ' Dezimaldauer
    If DezimalStellen = -1 Then
        Return d     ' gibt die Dauer mit allen Dezimalstellen zurueck
    Else
        Return Round2(d, DezimalStellen)  ' abrunden auf DezimalStellen
    End If
End Sub
Beste Grüsse.
 

wm.chatman

Well-Known Member
Licensed User
Longtime User
Klaus das ist ECHT SUPER KLASSE von Dir ! Jetzt nur noch einbinden und zapp.....
Habe auch eine exel Tabelle vertig gestellt. Nur, die Ex tabelle gibt bei einigen Minuten werte die endziffer 0 nicht zurück. bsp. 60 min = 1,00.
Hier erscheint der wert = 1

Klaus, was würden wir ohne deine Hilfe machen ? grins :)
 
Last edited:

wm.chatman

Well-Known Member
Licensed User
Longtime User
Nun ja, hier mein fehler

Compiling code. Error
Error compiling program.
Error description: Unknown member: scale
Occurred on line: 239
If (Activity.Width/Layoutvalues1.Scale)<640 Then
Word: scale

Hatte deinen Code Snippet mit eingefügt sonst nichts, in der letzten zeile des Programs.

vorher hatte ich keine probleme, werde das alles neu gestalten und weiter sehen. Muss jestzt meine Spinnen Tiere füttern, die haben großen hunger.
Dann mach ich das ganze noch einmal.
 
Last edited:

superscope

Member
Licensed User
Longtime User
Mit dieser Routine könnt Ihr ein Zeitdauer in Dezimalstunden umrechenen.
B4X:
'Rechnet eine Zeitdauer als String in eine Dezimalzahl um
'Beispiele:
'DezimalStunden("8:45", 3) ergibt 8.75
'DezimalStunden("8:47", 3) ergibt 8.783
'DezimalStellen = -1  ohne Abrundung
'DezimalStunden("8:47", -1) ergibt 8.783333333333333
Sub DezimalStunden(Zeit As String, DezimalStellen As Int) As Double
    Dim st(2) As String
    Dim s, m , d As Double
    
    st = Regex.Split(":", Zeit)  ' zerteilt den String in Stunden und Minuten
    s = st(0)           ' Stunden als Zahl
    m = st(1)           ' Minuten als Zahl
    d = s + m / 60      ' Dezimaldauer
    If DezimalStellen = -1 Then
        Return d     ' gibt die Dauer mit allen Dezimalstellen zurueck
    Else
        Return Round2(d, DezimalStellen)  ' abrunden auf DezimalStellen
    End If
End Sub
Beste Grüsse.

Hallo klaus,
wie kann ich diese code meine app einbinden? Ich habe versucht aber leider nicht geschaft :-( Möchte ich nur die summe (stunden) auf dezimal umrechnen.

Danke
 

klaus

Expert
Licensed User
Longtime User
Kannst Du Deinen Code den Du versucht hast schicken ?
( Möchte ich nur die summe (stunden) auf dezimal umrechnen.
Ist diene Summe eine String Variable ?

Als Ich Dein Programm angeschaut habe kam mir Diene Zeitrechnung komisch vor, speziell diese Gleichung: timezone = DateTime.TimeParse("06:00")
Die 6 Stunden kommen aus 3 mal Zeitzone !
Das funktioniert nur in unserer Zeitzone, wenn Du eine andere Zeitzone einstellst sind die Rechnungen falsch.
Diese Routine rechnet richtig:
B4X:
'Rechnet eine Zeitdauer zwischen zwei Zeiten mit einer Pause
'Wenn die Endzeit kleiner als die Beginnzeit ist
'wird als End Datum der naechste Tag angenommen
Sub ZeitdauerRechnen As String
    Dim Beginn, Ende, Pause, Dauer, TicksHeute As Long

    TicksHeute = DateTime.DateParse(DateTime.Date(DateTime.Now))
    Beginn = DateTime.TimeParse(edtBeginn.text)
    Ende = DateTime.TimeParse(edtEnde.text)
    If Ende < Beginn Then
        Ende = Ende + DateTime.TicksPerDay
    End If
    Pause = DateTime.TimeParse(edtPause.text) - TicksHeute
    
    Dauer = (Ende - Beginn - Pause) + TicksHeute
    Return DateTime.Time(Dauer)
End Sub
Dann in den verschiedenen Routinen
B4X:
Sub btnAddNew_Click
    edtinfo.text = ZeitdauerRechnen
    If RecordExists = False Then
Beste Güsse.
 

wm.chatman

Well-Known Member
Licensed User
Longtime User
so Spinnentiere vertig.

Also bei mir auf dem handy Samsung SII gibt es mir die Normalen Zeit Stunden korrekt an. Ohne änderungen am Open Source Code. Auf dem SamTab2 geht dies aber nicht, hier gibt es eine sehr grosse differenz.
Beginn Arbeitszeit: 14:30 Ende Arbeitszeit: 23:30 = Gesamt Stunden > 02:30:00
 

superscope

Member
Licensed User
Longtime User
Besten dank @klaus. Ich bin anfänger mit basic4android und ich habe keine erfahrung. Ich habe alle code vom internet tutorial gelernt vom beispiel app bischen umgeschrieben und eine kleine app gebastellt. Möchte ich aber noch mehr lernen.
 

wm.chatman

Well-Known Member
Licensed User
Longtime User
nein, tut es nicht. ich habe das programm von superscope auf mein Samsing SII installiert, und dies rechnet die gesamt stunden richtig.
Auf dem Samsung tab nicht. Hier gibt es differenzen mit den gesamt stunden, wie du selbst schon bemerkt hast.
Und bei Open Source Code, meine ich Code.

Best regards,
William
 
Last edited:

superscope

Member
Licensed User
Longtime User
Du kannst ja mal Deine letzte Version schicken und Ich schau mal rein was man verbessern kann.
Beste Grüsse.

Hallo klaus, ich schon dank für deine hilfe. Ich habe problem gelöst mit der Zeitzone.

Hier ist korrigierte version. Auflösung 800x1280, datei 47.1 KB zum download.

StempeluhrV1.1

mit freundlichen Grüßen
 
Last edited:

klaus

Expert
Licensed User
Longtime User
Hallo superscope.
Ich habe versucht dein Programm herunterzuladen aber mein Antivirusprogramm zeigt mir dass der Link gefährlich währe habe dann nicht weiter gemacht (gleich wie im Post#15).
Kannst Du bitte das Programm als zip Datei (IDE Menü Files / Export As Zip) hier im Forum hochladen mit dem 'Manage Attachments' Button.

Beste Grüsse.
 

wm.chatman

Well-Known Member
Licensed User
Longtime User
Hello Klaus and superscope.

Habe die neue version 1.1 und das mit der zeit zone klappt jetzt auch richtig. Das einzige was jetzt noch fehlt sind die Gesamt Stunden als Dezimal Ergebniss.
Stunden/Hours = Dezimal Stunden/Hours.
Stunden Gesamt: 07:30:00 = 07:50:00 in Dezimal Zeit.

@ Klaus. ich habe dein Code für Dezimal Rechnung eingebunden, aber auch hier komme ich auch leider nicht weiter, um das end Ergebniss der gesamt Stunden in Dezimal zu bekommen.

Funzt auch jetzt auf SamsungTab2 10.1

Viele Grüße
William
 

klaus

Expert
Licensed User
Longtime User
Wenn Ich das letzte Programm von superscope habe werde Ich reinschauen.
Das Problem was Ich vorläufig sehe ist die Speicherung der Zeitendauern als String.
Es währe bestimmt vorteilhafter die Werte als Zahlen zu speichern und dann direct die Summe mit einer SQL Query aus der Datenbank zu holen.

Beste Grüsse.
 

superscope

Member
Licensed User
Longtime User
Wenn Ich das letzte Programm von superscope habe werde Ich reinschauen.
Das Problem was Ich vorläufig sehe ist die Speicherung der Zeitendauern als String.
Es währe bestimmt vorteilhafter die Werte als Zahlen zu speichern und dann direct die Summe mit einer SQL Query aus der Datenbank zu holen.

Beste Grüsse.

Hallo klaus, ich habe noch mal uploaded.
 

Attachments

  • stempeluhrV1.1.zip
    47.2 KB · Views: 240

klaus

Expert
Licensed User
Longtime User
Hallo Ihr Beiden,
Ich habe etwas mit dem Programm 'rumgespielt'.
- habe das Layout umgekrempelt mit den neuen AutoScale Funktionen das sollte auf allen Auflösungen laufen (benötigt B4A Version 2.20)
- habe das Zeitformat auf Stunden und Minuten begrenzt HH:mm ohne Sekunden.
- habe die erlaubten Eingabezeichen begrenzt, benötigt die IME Library
- habe Gesamtzeitrechnung als Menüeintrag hinzugefügt
- habe in DBUtils eine neue ExecuteHtml2 Routine zugefügt, erlaubt die Textgrösse als Parameter zu übergeben (im Zusammenhang mit AutoScale)
- habe die btnUpdate_Click Routine etwas abgeändert.
- die Eingabekontrolle benötigt bestimmt noch ein mehr Kontrollen.
- und noch ein Paar Kleinigkeiten.

@superscope
Da Du sagtest dass Du Anfänger bist habe Ich mir erlaubt etwas tiefer zu gehen.

Beste Grüsse.
 

Attachments

  • stempeluhrV1_2.zip
    48.8 KB · Views: 247
Top