Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

19 Nov 2015, 17:51

Hallo,

habe ein Problem wo Ich zur Zeit nicht weiter weiß.

Ich möchte in einem Script von mir die Alte Zeit (was z.b. vor 12 Minuten war) und die jetzige Zeit anzeigen lassen. Das hat auch geklappt durch kleine Tuts.
Doch möchte Ich jetzt gerne die vergangene Zeit zwischen alter und jetziger Zeit ausrechnen lassen und anzeigen. Jedoch stehe Ich da vor einem Problem.
Er zeigt mir weder das Endergebnis an noch berechnet er diese.


Ich habe es Folgend gemacht, aber irgendwie habe Ich einen Fehler drin:

Code: Select all

Vergangen:
Gui, Submit, Nohide
Zeit := (jetzt-alt)
MsgBox, alte Zeit: %alt% jetzige Zeit: %jetzt%. Es ist vergangen: %Zeit%
return
Nun stellt sich die frage warum er mir das nicht anzeigen will.
Ich hoffe jemand kann mir weiter helfen.
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

19 Nov 2015, 18:40

Was genau erscheint denn in der MsgBox?
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

19 Nov 2015, 23:59

in der MsgBox wird nur die alte und die jetzige Zeit angezeigt
just me
Posts: 7748
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 04:09

Was steht denn in jetzt und alt? Wenn es Zeitstempel sind, kannst Du die Differenz so berechnen. Anderenfalls musst Du die Inhalte erst einmal in Zeitstempel umwandeln (oder Dir eine eigene Methode dafür ausdenken, wie Du das rechnest).
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 05:50

Es steht die alte Uhrzeit drin und die jetzige Uhrzeit.

z.b. alt 10:25 Uhr und jetzt 11:05 Uhr.

Normalerweise sollte er dann ausrechnen wieviel hh:mm
Verstrichen ist
User avatar
jNizM
Posts: 2681
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 05:56

Ich bezweifel das du mit simples (Neu - Alt) eine Uhrzeit im HH:MM Format berechnen kannst.
Eine Variante wäre die zeit in Minuten umzurechnen und dann die Ergebnisse zu dividieren.

Eine andere wäre commands/EnvSub.htm dazu brauchst du die Zeit im YYYYMMDDHH24MISS Format.

ups.. hatte just me ja oben schon beschrieben ^^ (Hätte mal alles Lesen sollen)

Wie bekommst du denn die Zeit zurzeit? Du könntest A_Hour und A_Min benutzen (docs/Variables.htm#date) und mit diesen auch leicht die Differenz berechnen.
[AHK] 1.1.33.02 x64 Unicode | [WIN] 10 Pro (Version 20H2) x64 | [GitHub] Profile
Donations are appreciated if I could help you
just me
Posts: 7748
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 06:19

Code: Select all

#NoEnv
Jetzt := "11:05"
Alt := "10:25"
Heute := A_YYYY . A_MM . A_DD
Datum1 := Heute . SubStr(Jetzt, 1, 2) . SubStr(Jetzt, 4, 2)
Datum2 := Heute . SubStr(Alt, 1, 2) . SubStr(Alt, 4, 2)
Datum1 -= %Datum2%, M ; Minuten
MsgBox, Von %Alt% bis %Jetzt% sind %Datum1% Minuten vergangen.
Wenn Du die Ausgabe in Std:Min machen willst, musst Du noch rechnen (1 Std. = 60 Min.).
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 07:16

Ich habe selbst gerade einen Denkfehler,

Ich meinte wenn ich ein Button drücke die Uhrzeit ist dann alt und sobald ich einen anderen drücke zeigt er mir die startzeiit, jetzt zeit und wieviel vergangen ist.
User avatar
Gucky_87
Posts: 352
Joined: 03 Jul 2014, 05:09

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 09:04

Hallo,

DU kannst mit Zeiten nur dann rechnen, wenn diese als Zeitstempel vorliegen.
Zeitstempel sind IMMER in folgendem Format: YYYYMMDDHHMMSS

Dabei sind YYYY das Jahr (z.B. 2015), MM ist der Monat (z.B. 11) und DD der Tag (z.B: 20 für heute).
Bei der Uhrzeit ist es dann ähnlich: HHMMSS sind Stunden, Minuten und Sekunden.

Der aktuelle Zeitstempel von jetzt ist also z.B. 20151120145328 (20.11.2015, 14:53:28 Uhr)
Die aktuelle Zeit bekommst Du als kompletten Zeitstempel auch mit Zeit := A_Now raus.

Diese Werte kannst Du Dir "zusammenbauen", indem Du z.B. A_YYYY, A_MM, A_DD für das Datum einsetzen lässt und A_Hour, A_Min und A_Sec für die Uhrzeit.

Du kannst es auch kombinieren. Z.B. bedeutet Zeit := A_YYYY . "10" . "22", dass der 22. Oktober des aktuellen Jahres gemeint ist.

Mit der Uhrzeit ist es ähnlich.
Zeit := A_YYYY . A_MM . A_DD . A_Hour . "0000" bedeutet, dass der heutige Tag, die aktuelle Stunde, aber glatt (also 0 Minuten und 0 Sekunden) gemeint ist.

Grüße,

Gucky
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 09:19

Das ist mir klar. Soweit War ich schon etwas.
Habe es ja soweit das die Zeiten gezeigt werden aber eben die Berechnung nicht.
just me
Posts: 7748
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 09:25

Ich weiß nicht, ob Dein jetzt Problem gelöst ist. Wenn nicht, zeige doch bitte den kompletten Code, zumindest Eingabe, Verarbeitung, Ausgabe.
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 09:36

Werde ich heute Abend da ich mit Handy gerade on bin.

Aber ich habe oben im Script am Anfang FormatTime, für alt und jetzt um in hh:mm format.

Der Rest ist im Anfang Post drin wie es ausgeführt werden soll.
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 17:14

So bin wieder da,

also Just me Ich habe deins mal ausprobiert. ja wäre was aber leider soll es ohne vorgaben laufen das heißt wenn das script/Programm um 11:21 gestartet wird soll eben alt=11:21 beinhalten.

Dann wenn Ich einen gewissen Button drücke geht ein Fenster/Gui oder MsgBox auf wo dann die jetzige Zeit (z.b. 12:23 ist) und danach die schon verstrichene Zeit zwischen 11:21 und 12:23Uhr.


Ich habe das ausprobiert im script folgenden:

Code: Select all

Alt :=A_Now
FormatTime, Alt,A_Now,HH:mm



Verstrichen: ;Label
Jetzt:= A_hour ":" A_Min ;zeigt im Fenster an
Zeit :=(Jetzt-Alt) ;Also 12:23 - 11:21 = hier ist das ergebnis von 1:02Std
MsgBox,alte Zeit: %Alt% jetzige Zeit: %Jetzt%. Es ist vergangen: %Zeit%
return
Die Zeiten stehen auch da, bei alt steht dann die Zeit wann das Prog gestartet wurde und bei Jetzt steht die jetzige Zeit wo Ich das Fenster/Button gedrückt habe drin, nur eben das ausgerechnete also die 1:02std als beispiel stehen nicht drin.

Es soll keine Zeit vorgegeben werden sondern immer die Zeit die gerade war und jetzt ist. sowie die distance dazwischen (Ich nenne es mal so^^)

Anders habe Ich es nicht ausser das Ich experimentiert habe was aber dazu führt das nix angezeigt wird. das ist gerade das was Ich so schon habe bis eben auf die ausrechnung von beiden.

Weil Jetzt-=Alt zeigt mir nicht die distance der vergangene Zeit an.

Ich möchte aber wissen wenn Ich das Fenster öffne also den Button gedrückt habe und die MsgBox sich öffnet wie lange das Programm nun läuft. mit alt Zeit, jetzt Zeit und der ausgerechneten Zeit.

Es soll einfach gehalten werden da das Programm nicht zu lastig und zu groß werden soll.
Aber auch für mich einen Anfänger soll es leicht sein um zu verstehen weil Ich wei das Ich z.b. eingaben im Text speichern kann diese per Variable mit einem anderen subtrahieren kann.

Code: Select all

Nehmen wir mal an Ich bin mit 13566km gestartet, diese habe Ich eingegeben im Text Edit und diese Zahl wird gespeichert als Variable, so wenn Ich dann bei 13570 km stoppe und das dann ausrechnen will mache Ich das so:

Distance:= (Anfang-Ende)
MsgBox, Deine gefahrene Strecke beträgt %Distance%km.


Daher dachte Ich das es einfach auch mit der Zeit geht.

Ich hoffe Ihr wisst was Ich genau meine^^.
Aber danke das Ihr so hilfreich seit, also Super :thumbup:
just me
Posts: 7748
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

20 Nov 2015, 22:44

OK, dann schau Dir das mal an. Mein Beispiel hier zeigt ja, wie das im Prinzip funktioniert. Woher die Werte kommen, mit denen gerechnet wird, ändert nichts daran. Für AHK ist eine Angabe wie 11:05 jedenfalls keine Zahl, mit der es rechnen könnte. Und wenn man versucht, mit ungültigen Werten zu rechnen, bekommt man als Ergebnis immer "", d.h. eine leere Zeichenfolge bzw. nichts.

Nun noch einmal konkret, hier mit einem Hotkey (Strg+Shift+z):

Code: Select all

#NoEnv
; Beim Start des Skripts die aktuelle Zeit merken, nur volle Minuten
Start := SubStr(A_Now, 1, 12) ; oder: A_YYYY . A_MM . A_DD . A_Hour . A_Min
; StartHHMM ändert sich nicht mehr, kann also gleich hier versorgt werden
FormatTime, StartHHMM, %Start%, HH:mm
Return

; Hotkey Strg+Shift+z für die Berechnung
^+z::
; Aktuelle Zeit holen, nur volle Minuten
Jetzt := SubStr(A_Now, 1, 12)
; Format Std:Min für die Ausgabe erstellen
FormatTime, JetztHHMM, %Jetzt%, HH:mm
; Differenz in Minuten bilden
Zeit := Jetzt
Zeit -= %Start%, M
; Minuten in Std:Min umwandeln
Stunden := Zeit // 60
Minuten := Zeit - (Stunden * 60)
; Jetzt kommt eine interessante, relativ neue Funktion, die allerdings etwas gewöhnungsbedürftig ist.
; Im Formatstring werden Felder, die durch den Inhalt der folgenden Variablen beschickt werden sollen, in geschweiften
; Klammern angegeben "{}". Der Doppelpunkt ":" trennt den Index der Variablen von der Formatbeschreibung. Wenn der Index
; der Reihenfolge der Felder entspricht, kann er weggelassen werden. Die "02" hinter dem Doppelpunkt steht für 'zwei
; Zeichen mit führenden Nullen'.
ZeitHHMM := Format("{:02}:{:02}", Stunden, Minuten)
; Händisch kann man das auch so machen:
; If (Stunden < 10)
;    Stunden := "0" . Stunden
; If (Minuten < 10)
;    Minuten := "0" . Minuten
; ZeitHHMM := Stunden . ":" . Minuten
; Und jetzt die Ausgabe
MsgBox, 0, Zeit, Startzeit: %StartHHMM%, jetzige Zeit: %JetztHHMM%. Es ist vergangen: %ZeitHHMM%
Return
SteffenWillers
Posts: 9
Joined: 19 Nov 2015, 17:38

Re: Berechnung/Anzeige Alt-Neuzeit, Vergangene Zeit

21 Nov 2015, 00:10

HalloJust me,

Ja genau sowas meinte Ich, und jetzt habe Ich auch meine Denkfehler gefunden, also wunderbar eure Hilfe. Ich finde das dein Lösungs Post als Beispiel im Tut sehr gut passt.

Danke Euch für die Hilfe.
Es Funktioniert wunderbar :thumbup: :thumbup:

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 4 guests