Wenn/Dann Abfrage in Abhängigkeit eines Wochentages

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wenn/Dann Abfrage in Abhängigkeit eines Wochentages

Re: Wenn/Dann Abfrage in Abhängigkeit eines Wochentages

Post by Jakobus » 11 Jul 2019, 10:51

Danke für die gelungene Lösung an "Just Me" und für den Hinweis von "toralf"
Die Lösung hätte ich in der Geschwindigkeit nicht gefunden.

Hier der vollständige Code für die Nachwelt.
Das Setzen/Addieren eines Datums in Abhängigkeit des aktuellen Wochentages über die If/Else Abfrage

Code: Select all

~^j:: ; Drücke STRG + J und führe folgenden Befehl aus

Heute = %A_Now% ; Schreibe das aktuelle Datum in die Variable Heute

Wochentag := A_WDay ; Schreibe den aktuelle 1-stellige Wochentag (1-7) in die Variable Wochentag. 1 ist Sonntag in allen Sprach- und Regionseinstellungen.

If (Wochentag = 6) ; Freitag
   AddiereTage := 3
Else If (Wochentag = 7) ; Samstag
   AddiereTage := 2
Else
   AddiereTage := 1 ; So, Mo, Di, Mi, Do

EnvAdd, Heute, AddiereTage, Days ; AddiereTage auf das heutige Datum und setze das Datum auf den kommenden Tag

FormatTime, Heute, %Heute%, dd.MM.yyyy ; Formatiere die Datumsanzeige wie folgt: 10.07.2019

Send, {Space}{#}%Heute%{#}{Space} ; Gibt das Ergebnis aus und klammere das Ergebnis mit dem Sonderzeichen # und einem Leerzeichen vorn und hinten ein

Heute = ; Variable Heute löschen
AddiereTage = ; Variable AddiereTage löschen

return

Re: Wenn/Dann Abfrage in Abhängigkeit eines Wochentages

Post by just me » 10 Jul 2019, 16:35

... oder auch die eingebaute Variable A_WDay:

Code: Select all

~^j:: ; Drücke STRG + J und führe folgenden Befehl aus
Jetzt := A_Now
Wochentag := A_WDay

If (Wochentag = 6) ; Freitag
   AddiereTage := 3
Else If (Wochentag = 7) ; Samstag
   AddiereTage := 2
Else
   AddiereTage := 1

Morgen := Jetzt
Morgen += %AddiereTage%, Days
FormatTime, Morgen, %Morgen%, dd.MM.yyyy ; Formatiere die Datumsanzeige 10.07.2019
Send, {Space}{#}%Morgen%{#}{Space} ; Gibt das Ergebnis aus und klammere das Ergebnis mit dem Sonderzeichen # und einem Leerzeichen vorn und hinten ein
Return

Re: Wenn/Dann Abfrage in Abhängigkeit eines Wochentages

Post by toralf » 10 Jul 2019, 14:07

Du kannst das Kommando FormatTime mit der Option WDay nutzen, um den aktuellen Wochentag zu ermitteln. Abhängig davon kannst du dann ja wie du selbst geschrieben hast die zu addierende Zahl ermitteln

Wenn/Dann Abfrage in Abhängigkeit eines Wochentages

Post by Jakobus » 10 Jul 2019, 10:55

Hallo Freunde von AutoHotkey,

Gesucht ist eine Abfrage nach Wochentagen wie folgt.

~^j:: ; Drücke STRG + J und führe folgenden Befehl aus

Wenn heute Freitag ist, dann lasse folgendes laufen

Morgen = %A_Now% ; Schreibe das aktuelle Datum in die Variable Morgen
EnvAdd, Morgen, 3, Days ; Addiere 3 Tage und setze das Datum auf den kommenden Montag
FormatTime, Morgen, %Morgen%, dd.MM.yyyy ; Formatiere die Datumsanzeige 10.07.2019
Send, {Space}{#}%Morgen%{#}{Space} ; Gibt das Ergebnis aus und klammere das Ergebnis mit dem Sonderzeichen # und einem Leerzeichen vorn und hinten ein
Morgen = ; Variable Morgen löschen
return

Wenn heute Samstag ist, dann lasse folgendes laufen

Morgen = %A_Now% ; Schreibe das aktuelle Datum in die Variable Morgen
EnvAdd, Morgen, 2, Days ; Addiere 2 Tage und setze das Datum auf den kommenden Montag
FormatTime, Morgen, %Morgen%, dd.MM.yyyy ; Formatiere die Datumsanzeige 10.07.2019
Send, {Space}{#}%Morgen%{#}{Space} ; Gibt das Ergebnis aus und klammere das Ergebnis mit dem Sonderzeichen # und einem Leerzeichen vorn und hinten ein
Morgen = ; Variable Morgen löschen
return

An allen anderen Tage mache folgendes

Morgen = %A_Now% ; Schreibe das aktuelle Datum in die Variable Morgen
EnvAdd, Morgen, 1, Days ; Addiere einen Tag auf das aktuelle Datum
FormatTime, Morgen, %Morgen%, dd.MM.yyyy ; Formatiere die Datumsanzeige 10.07.2019
Send, {Space}{#}%Morgen%{#}{Space} ; Gibt das Ergebnis aus und klammere das Ergebnis mit dem Sonderzeichen # und einem Leerzeichen vorn und hinten ein
Morgen = ; Variable Morgen löschen
return


Es ändert sich im Code nur der Adder in der 2. Zeile
Möglicherweise lässt sich auch nur diese eine Zeile mit einer Wenn/Dann-Abfrage umbauen.

Am Ende drückt man STRG + J und es erscheint immer das Datum von Morgen im folgendem Format mit einem Leerzeichen davor und dahinter
#11.07.2019#
Für Freitag und Samstag ist der Sprung auf Montag gewünscht.

Gesucht ist eine Lösung für die Wenn/Dann Abfrage nach Wochentagen

Top