Datumskürzel

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

halweg
Posts: 55
Joined: 17 Apr 2018, 10:34
Location: Dresden

Datumskürzel

16 Jul 2020, 05:17

Das ist eins der ersten Skripte, die ich auf jedem neuen System installiere. Vielleicht auch für andere interessant, zumindest als Use Case.
Das Skript ermöglicht die Eingabe eines Datums basierend auf Kürzeln. Dabei ist zunächst die + Taste als Endtaste für die Hotstrings eingestellt was man natürlich leicht anpassen kann.

Das Skript ersetzt u. a. folgende Eingaben ausgehend vom aktuellen Datum (heute ist der 16.07.20):
h+ ergibt 16.07.20
m+ ergibt 17.07.20
g+ ergibt 15.07.20
vg+ ergibt 14.07.20
mo+ ergibt 20.07.20
di-+ ergibt 14.07.20
usw.

Werden nach dem + innerhalb von 1s noch weitere + oder ein # (Nachbartaste) gedrückt, so ändert sich die Schreibweise, z. B.:
üm+ ergibt 18.07.20
üm++ ergibt 18.07.2020
üm+++ ergibt Samstag, den 18. Juli 2020
üm+# ergibt 2020-07-18

Hier der sicher schon etwas angestaubte Code:

Code: Select all

#HOTSTRING EndChars +
;*************************** Zeitwerte **************************************
::vvg::    ; Datum Vorvorgestern
::vg::     ; Datum Vorgestern
::g::      ; Datum Gestern
::h::      ; Datum Heute
::m::      ; Datum Morgen
::üm::     ; Datum Übermorgen
::üüm::    ; Datum Überübermorgen
  verschiebung := "-1g -2vg -3vvg +0h +1m +2üm +3üüm"                             ; Verschiebungswerte für Tageskürzel
  STRINGREPLACE, tag, A_THISHOTKEY,:,,ALL                                         ; Tageskürzel aus Hotstringnamen extrahieren
  STRINGMID, timeshift, verschiebung, INSTR(verschiebung,tag)-1, 2, L             ; passenden Verschiebungswert ermitteln 
  tag := A_NOW
  ENVADD, tag, %timeshift% ,DAYS
  datum_variabel_ausgeben(tag)
  RETURN

::mo::            ; "nächster Montag"
::di::
::mi::
::do::
::fr::
::sa::
::so::
::mo-::           ; "lezter Montag"
::di-::
::mi-::
::do-::
::fr-::
::sa-::
::so-::
::mo1::           ; "Montag in einer Woche"
::di1::
::mi1::
::do1::
::fr1::
::sa1::
::so1::
::mo2::           ; "Montag in zwei Wochen"
::di2::
::mi2::
::do2::
::fr2::
::sa2::
::so2::
STRINGMID, gesuchter_wochentag, A_THISHOTKEY, 3, 2          ; Wochentag aus Hotstringname extrahieren
tag :=
ENVADD, tag, 1, DAYS                                        ; Basis-Datum (morgen) ermitteln
IF A_THISHOTKEY CONTAINS -                                  ; Basis Datum eine Woche zurück bei "-" - Hotkey
  ENVADD, tag, -8, DAYS
ELSE IF A_THISHOTKEY CONTAINS 1                             ; Basis Datum eine Woche vor bei "1" - Hotkey
  ENVADD, tag, +7, DAYS
ELSE IF A_THISHOTKEY CONTAINS 2                             ; Basis Datum zwei Wochen vor bei "2" - Hotkey
  ENVADD, tag, +14, DAYS
LOOP, 7                                                     ; Datum zu Wochentag per LOOP ermitteln
  {
  FORMATTIME, wochentag, %tag%, ddd
  IF (gesuchter_wochentag = wochentag)
    BREAK
  ENVADD, tag, 1, DAYS
  }
datum_variabel_ausgeben(tag)
RETURN

datum_variabel_ausgeben(tag)
{
; Datumsvarianten genierieren
FORMATTIME, normales_datum, %tag%, dd.MM.yy                                     ; kurzes Datum           10.09.12
FORMATTIME, datum_jahr_lang,%tag%, dd.MM.yyy                                    ; Jahreszahl vierstellig 10.09.2012
FORMATTIME, inverses_datum, %tag%, yyy-MM-dd                                    ; Jahr vorangestellt     2012-09-10
FORMATTIME, langes_datum,   %tag%, LONGDATE                                     ; Langes Datum           Montag, 10. September 2012
STRINGREPLACE, langes_datum,langes_datum,`,,`, den

SEND %normales_datum%                                                         ; Zunächst kurzes Datum ausgeben (27.06.13)
INPUT, lang, L1 T1 V                                                             ; Zusatzeingabe überwachen
IF lang=#
  SEND, {BS 9}%inverses_datum%                             ; ... inverses Datum ausgeben (2013-06-27)
ELSE IF lang=+
  {
  SEND, {BS 9}%datum_jahr_lang%                                               ; ... zweistellige Jahreszahl durch vierstellige ersetzen (27.06.2013) ...
  INPUT, langlang, L1 T1 V                                                      ; ... weitere Zusatzeingabe überwachen ...
  IFEQUAL,langlang,+, SEND, {BS 11}%langes_datum%                             ; ... Langes Datum ausgeben (Donnerstag, 27. Juni 2013)
  }
INPUT   ; Eingabe beenden
}
BoBo
Posts: 3822
Joined: 13 May 2014, 17:15

Re: Datumskürzel

16 Jul 2020, 09:25

Bei mir hakt sowas daran, das ich mir mehr als 3 kürzel kaum merken kann, und dann noch mehr als 3 mal im quartal das datum verbuxeln - Höchststrafe! :shock:
Jedoch ein Super Konzept. Danke fürs "scheren" :thumbup:
halweg
Posts: 55
Joined: 17 Apr 2018, 10:34
Location: Dresden

Re: Datumskürzel

16 Jul 2020, 10:23

Die einzigen Kürzel und Tastenkombis, die man sich in größerem Umfang merken kann, sind die selbst vergebenen, deshalb ist sicher zunächst das Konzept interessant.

Ich selbst nutze täglich mindestens 3-5 mal eins der Kürzel.
User avatar
Frosti
Posts: 362
Joined: 27 Oct 2017, 14:30
GitHub: Ixiko

Re: Datumskürzel

16 Jul 2020, 12:30

Ich finde die Idee schon mal gar nicht so doof.
cellminton
Posts: 1
Joined: 20 Oct 2020, 04:46

Re: Datumskürzel

20 Oct 2020, 04:57

Hier eine andere Idee zum vereinfachten Schreiben von Datums-Präfixen und Datums-Angaben:

Code: Select all

;Datum-Hotkeys
; Schreibt "Monat_Tag_"
^ö::
	FormatTime, CurrentDate, , MM_dd_
	send, %CurrentDate%
return
; Schreibt "Tag.Monat.Jahr"
^ä::
	FormatTime, CurrentDateTime,T8 , dd.MM.yyyy
	send, %CurrentDateTime%
return
; Schreibt "Jahr_Monat_Tag_"
^ü::
	FormatTime, CurrentDateYear, , yy_MM_dd_
	send, %CurrentDateYear%
return

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 1 guest