Datum Augabe in Deutsch statt in Englisch

  • Hallo Zusammen
    Ich hoffe ich ich werde meinen Post richtig erfassen.

    Ich bin ein totaler Anfänger im Autoit bereich. Ich bin derzeit dran, meine Eingaben im Ticket System zu erleichtern. Mit meinem erstellten Script schaffe ich es derzeit, ein Datum sowie den Wochentag als Text zu "senden". Nun erfolgt die Ausgabe aber in Englisch "Wednesday". Gibt es eine Möglichkeit oder einen Parameter, damit die Ausgabe auf deutsch erfolgt?

    [autoit]

    #include <Date.au3>
    Sleep(1000)

    [/autoit][autoit][/autoit][autoit]

    ; Kein Tape eingelegt
    $sNewDate = _DateAdd( 'd',1, _NowCalcDate())
    send( "Es war kein Tape eingelegt ("&$sNewDate&"). ")

    [/autoit][autoit][/autoit][autoit]

    ; Überprüfung am...
    $iWeekday = _DateToDayOfWeek (@YEAR, @MON, @MDAY)
    send( "Wir überprüfen die Sicherung am " (& _DateDayOfWeek($iWeekDay)) & " nochmal.")

    [/autoit]

    Vielen Dank für die Hilfe
    Gruss Roman

  • Hallo und Herzlich willkommen im Forum.
    In meiner Signatur findest du einige Tutorials falls du Bedarf hast

    Zum eigentlichen Thema:
    Für die _DateDayOfWeek gibt es leider nur die englischen Namen.
    Das macht aber nichts weil man es sehr leicht umschreiben kann ;)
    Habs dir mal gebastelt:

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    Sleep(1000)

    [/autoit] [autoit][/autoit] [autoit]

    ; Kein Tape eingelegt
    $sNewDate = _DateAdd('d', 1, _NowCalcDate())
    Send("Es war kein Tape eingelegt (" & $sNewDate & "). ")

    [/autoit] [autoit][/autoit] [autoit]

    ; Überprüfung am...
    Send("Wir überprüfen die Sicherung am " & _DateDayOfWeekDeutsch(@WDAY) & " nochmal.")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DateDayOfWeekDeutsch($iDayNum, $iShort = 0)
    ; The first element (0) is intentionally empty. The valid range is 1 - 7. It is important
    ; this empty element is preserved or the days will be off by one.
    Local Const $aDayOfWeek[8] = ["", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
    Select
    Case Not StringIsInt($iDayNum) Or Not StringIsInt($iShort)
    Return SetError(1, 0, "")
    Case $iDayNum < 1 Or $iDayNum > 7
    Return SetError(1, 0, "")
    Case Else
    Select
    Case $iShort = 0
    Return $aDayOfWeek[$iDayNum]
    Case $iShort = 1
    Return StringLeft($aDayOfWeek[$iDayNum], 3)
    Case Else
    Return SetError(1, 0, "")
    EndSelect
    EndSelect
    EndFunc ;==>_DateDayOfWeekDeutsch

    [/autoit]

    Übrigens kannst du dir diese Zeile:

    [autoit]

    $iWeekday = _DateToDayOfWeek (@YEAR, @MON, @MDAY)

    [/autoit]


    komplett sparen wenn du einfach @WDAY verwendest ;)


    PS: statt Send() gibt es wahrscheinlich auch bessere Methoden. Je nachdem was du genau machen willst ;)

    Edit: spoiler gesetzt

  • Vielen dank für die super schnelle Antwort :)
    Ich hab grad auch noch einen Fehler in meinem Script gesehen. Und zwar sollte da ja das aktuelle Datum erscheinen und nicht das Datum "+1 Tag" - hab ich korrigiert. Nun wie kann ich mit der Funktion noch 1 Tag dazu zählen?

    [autoit]

    #include <Date.au3>
    Sleep(1000)

    [/autoit][autoit][/autoit][autoit]

    ; Kein Tape eingelegt
    $sNewDate = _DateAdd('d', 0, _NowCalcDate())
    Send("Es war kein Tape eingelegt (" & $sNewDate & "). ")

    [/autoit][autoit][/autoit][autoit]

    ; Überprüfung am...
    Send("Wir überprüfen die Sicherung am " & _DateDayOfWeekDeutsch(@WDAY) & " nochmals.")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _DateDayOfWeekDeutsch($iDayNum, $iShort = 0)
    ; The first element (0) is intentionally empty. The valid range is 1 - 7. It is important
    ; this empty element is preserved or the days will be off by one.
    Local Const $aDayOfWeek[8] = ["", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
    Select
    Case Not StringIsInt($iDayNum) Or Not StringIsInt($iShort)
    Return SetError(1, 0, "")
    Case $iDayNum < 1 Or $iDayNum > 7
    Return SetError(1, 0, "")
    Case Else
    Select
    Case $iShort = 0
    Return $aDayOfWeek[$iDayNum]
    Case $iShort = 1
    Return StringLeft($aDayOfWeek[$iDayNum], 3)
    Case Else
    Return SetError(1, 0, "")
    EndSelect
    EndSelect
    EndFunc ;==>_DateDayOfWeekDeutsch

    [/autoit]

    Vielen dank für die schnelle Hilfe!
    Gruss Roman

  • Also ich würds so machen:

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    Sleep(1000)

    [/autoit] [autoit][/autoit] [autoit]

    ; Kein Tape eingelegt
    $sNewDate = _DateAdd('d', 0, _NowCalcDate())
    Send("Es war kein Tape eingelegt (" & $sNewDate & "). ")

    [/autoit] [autoit][/autoit] [autoit]

    ; Überprüfung am...
    If @WDAY = 7 Then
    $iWeekday = 1
    Else
    $iWeekday = @WDAY + 1
    EndIf
    Send("Wir überprüfen die Sicherung am " & _DateDayOfWeekDeutsch($iWeekday) & " nochmals.")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DateDayOfWeekDeutsch($iDayNum, $iShort = 0)
    ; The first element (0) is intentionally empty. The valid range is 1 - 7. It is important
    ; this empty element is preserved or the days will be off by one.
    Local Const $aDayOfWeek[8] = ["", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
    Select
    Case Not StringIsInt($iDayNum) Or Not StringIsInt($iShort)
    Return SetError(1, 0, "")
    Case $iDayNum < 1 Or $iDayNum > 7
    Return SetError(1, 0, "")
    Case Else
    Select
    Case $iShort = 0
    Return $aDayOfWeek[$iDayNum]
    Case $iShort = 1
    Return StringLeft($aDayOfWeek[$iDayNum], 3)
    Case Else
    Return SetError(1, 0, "")
    EndSelect
    EndSelect
    EndFunc ;==>_DateDayOfWeekDeutsch

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Natürlich könnte man es auch in der Funktion anpassen, aber so finde ich es sauberer.

  • Nun wie kann ich mit der Funktion noch 1 Tag dazu zählen?

    [autoit]


    ; Überprüfung am...
    Send("Wir überprüfen die Sicherung am " & _DateDayOfWeekDeutsch(@WDAY+1) & " nochmals.") ; nicht heute sondern morgen... ungetestet

    [/autoit]

    EDIT: Schnitzel hat die bessere Variante, bei mir wäre von Samstag auf Sonntag wohl ein Fehler drin.


    Warum fängt in Autoit die Woche eigentlich Sonntags an?

    [autoit]

    Local Const $aDayOfWeek[8] = ["", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]

    [/autoit]
  • [autoit]

    ; Überprüfung am...
    Send("Wir überprüfen die Sicherung am " & _DateDayOfWeekDeutsch(@WDAY+1) & " nochmals.") ; nicht heute sondern morgen... ungetestet

    [/autoit]


    Da wirst du an einem Sonntag aber ein Problem bekommen
    Wochentag Nr. 8 wirste nicht finden^^

    Warum fängt in Autoit die Woche eigentlich Sonntags an?

    [autoit]

    Local Const $aDayOfWeek[8] = ["", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]

    [/autoit]

    Kurz gesagt: Weils in der Funktion _DateDayOfWeek aus der Date.au3 so vorgegeben is

  • Verbesserungsvorschlag mit Begründende Denkensweise:

    Statt "send" zu verwenden, würde ich es lieber in eine Textdatei protokollieren und/oder per Email/SMS versenden.

    Begründende Denkensweise :whistling:
    Wenn man z. B. als Administratorin (no Tape System ;) ) eine Sicherung erstellen möchte, dann doch nach der Arbeit und dann auch bitte bis zum nächsten Morgen, wo dann erst mal Mails gelesen werden. ;) Aua, die Mail sagt mir doch wirklich, das da was schief gelaufen ist. Und warum nicht gleich per SMS, dann hätte man doch via Tunnel schauen was da los ist/war. Also doch noch SMS dazu oder nur SMS?

    Aber jeder kann es sich ja umschreiben. Ich weisssssss ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Vielen Dank für alle Antworten. Ich arbeite derzeit als Informatik Lehrlinge und überwache die Datensicherungen von ca. 140 Kunden. Sofern nun eine mal nicht gelaufen ist, hinterlege ich für mich persönlich eine Nachricht in unserem Ticket System, deswegen heisst diese auch immer gleich. :)
    Da das Script für das Ticketsystem nicht mit AutoIt Window Info funktioniert, verwende ich den Befehl send, da ich das Ticket eh noch kontrollieren muss.

    Nun hätte ich aber doch noch eine zusätzliche Frage. Wie schreibe ich das Script um, damit es mir folgendes ausgibt.

    Es ist Freitag und ich lasse das Script laufen, da ich am Samstag nicht am arbeiten bin, gibt das Script statt üblicherweise Samstag (actual Day +1) Montag aus. Wie schreibe ich dies nun um, damit es mir immer am Freitag den Wert "Montag" ausgibt?

    Vielen Dank für eure Hilfe!
    Gruss Roman

    aktueller Code:

    [autoit]

    #include <Date.au3>
    Sleep(1000)

    [/autoit][autoit][/autoit][autoit]

    ; Kein Tape eingelegt
    $sNewDate = _DateAdd('d', 0, _NowCalcDate())
    send("vitoCare: Kein Tape eingelegt {TAB}")
    Send("Es war kein Tape eingelegt (" & _DateDayOfWeekDeutsch(@WDAY)& " " & $sNewDate & ").")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    If @wday = 7 Then
    $iWeekday=1
    Else
    $iWeekday = @WDAY + 1
    EndIf
    Send(" Wir überprüfen die Sicherung am " & _DateDayOfWeekDeutsch($iWeekday) & " nochmals.")
    send("{TAB}{TAB}{TAB}{TAB}{TAB} 10 {TAB} vitocare {TAB}")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _DateDayOfWeekDeutsch($iDayNum, $iShort = 0)
    ; The first element (0) is intentionally empty. The valid range is 1 - 7. It is important
    ; this empty element is preserved or the days will be off by one.
    Local Const $aDayOfWeek[8] = ["", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
    Select
    Case Not StringIsInt($iDayNum) Or Not StringIsInt($iShort)
    Return SetError(1, 0, "")
    Case $iDayNum < 1 Or $iDayNum > 7
    Return SetError(1, 0, "")
    Case Else
    Select
    Case $iShort = 0
    Return $aDayOfWeek[$iDayNum]
    Case $iShort = 1
    Return StringLeft($aDayOfWeek[$iDayNum], 3)
    Case Else
    Return SetError(1, 0, "")
    EndSelect
    EndSelect
    EndFunc ;==>_DateDayOfWeekDeutsch

    [/autoit]
  • Wie schreibe ich dies nun um, damit es mir immer am Freitag den Wert "Montag" ausgibt?

    [autoit]


    If @wday = 6 Or @wday = 7 Then ; wenn freitag oder Samstag
    $iWeekday=2 ; dann montag
    Else
    $iWeekday = @WDAY + 1 ; sonst morgen
    EndIf

    [/autoit]

    oder vielleicht besser:

    [autoit]


    If @wday > 5 Then ; wenn freitag oder Samstag
    $iWeekday=2 ; dann montag
    Else
    $iWeekday = @WDAY + 1 ; sonst morgen
    EndIf

    [/autoit]
    • Offizieller Beitrag

    Warum fängt in Autoit die Woche eigentlich Sonntags an?


    Das ist nicht nur in AutoIt so. Auch in Deutschland fing bis 1976 die Woche am Sonntag an. Daher rührt übrigens auch der Wochentag "Mittwoch", der ja nur dann in der Mitte liegt, wenn vorher und nachher 3 Tage sind. ;)
    Übrigens gibt es in Deutschland (wie nicht anders zu erwarten) auch dafür eine Norm, die ISO 8601 regelt Wochennummerierung und Wochentagsreihenfolge. ;)