Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec) - oder andere Länderformate

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: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec) - oder andere Länderformate

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec) - oder andere Länderformate

Post by Jakobus » 12 May 2020, 06:54

Bugfix zu meine Code oben:

Statt

Code: Select all

FormatTime, Heute, L0x0809, dd-MMM	
Ergibt am Ende Reply 12-May //

Fixed Bug

Code: Select all

FormatTime, Heute, %Heute% L0x0809, dd-MMM
Gewünscht Reply 13-May //

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by Guest » 07 May 2020, 06:03

Danke Lucky Joe,
und Danke an die ergänzenden Hinweise von allen Anderen.

Die Anfrage wurde elegant gelöst.
Viel bersser als ursprünglich erwartet.

Habe den goldenen Tipp mit dem Ländercode wie folgt eingebaut:

Code: Select all

#IfWinActive, ahk_class rctrl_renwnd32 	; ahk_class zu finden über Window Spy - Code ausführen nur im Outlook 2016 Email Fenster

~^r::						; Drücke die Tasten STRG + R

Heute = %A_Now%				; Schreibe das aktuelle Datum in die Variable Heute
Wochentag := A_WDay 		; Der aktuelle 1-stellige Wochentag (1-7). 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 aktuelle Datum

; FormatTime, Heute, %Heute%, dd-MMM		; Formatiere die Datumsanzeige wie folgt: 07.05.2020 - urspünglicher Eintrag
; FormatTime, Heute, L0x0809, dd-MMM		; languageCode_0411 := "Japanese" - alle Ländercodes zu finden unter https://www.autohotkey.com/docs/misc/Languages.htm

FormatTime, Heute, L0x0809, dd-MMM			; Englisches Datumsformat (May/Dec) languageCode_0809 := "English_United_Kingdom" 

; Gut zu wissen
; In AHK 1.1 wird der Inhalt von (fast?) allen AHK-Variablen intern als String gekennzeichnet. Führende Nullen verschwinden erst, wenn man mit den Werten rechnet.
; AHK 1.1 Arrays dagegen legen alle Werte, die als Integerwert interpretiert werden können, als 'Integer Key' an und enfernen dabei 'unnütze' führende Nullen.

Send, Reply %Heute% //{Space}		; Gibt das Ergebnis aus und und hänge // mit Leerzeichen dahinter

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

return
 
; Der Befehl return schließt das Makro ab und beendet hier die Skriptausführung. 
; In einem Skript, das nur aus dem gezeigten Hotstring besteht, wäre er überflüssig. 
; In der Regel definiert man in einem Skript aber mehrere Hotstrings oder Hotkeys. 
; Technisch sind diese nichts anderes als Labels, also Sprungmarken. 
; Ohne das return würde das Skript einfach weiterlaufen und den zum nächsten Eintrag gehörenden Code auch noch ausführen.

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by garry » 07 May 2020, 05:55

@BoBo
@just me
danke
Die Kürzel (de,en,jp) habe ich einfach willkürlich gewählt, um eine Zuordnung im objArray vornehmen zu können.
...
In der Zeile für Japan das language_code-setting von L0411 nach L0x0411 wechseln?
es funktioniert jetzt ... d.h language Code mit führenden Nullen so verwenden > L0x0457 ( statt L0457 ) .... wobei die anderen Beispiele hatten auch führende Nullen (?)

Code: Select all

Time := A_Now
FormatTime,konkani, %time% L0x0457, dddd MMMM dd-MM-yyyy  ;
FormatTime,here   , %time%        , dddd MMMM dd-MM-yyyy  ;
msgbox,Language-Code Konkani-Goa  = %konkani%`nLanguage-Code here %a_language% = %here%
... irgendwie 'confused ' ...

Code: Select all

;- https://www.autohotkey.com/docs/misc/Languages.htm
;- https://www.science.co.il/language/Locale-codes.php
time=20201005140012
FormatTime,japan        , %time% L0x0411, dddd MMMM dd-MM-yyyy  ;-- 
FormatTime,konkani      , %time% L0x0457, dddd MMMM dd-MM-yyyy  ;
FormatTime,US_en        , %time% L0x0409, dddd MMMM dd-MM-yyyy  ;
FormatTime,Frysland     , %time% L0x0462, dddd MMMM dd-MM-yyyy  ;
FormatTime,Nederland    , %time% L0x0413, dddd MMMM dd-MM-yyyy  ;
FormatTime,Afrikaans    , %time% L0x0436, dddd MMMM dd-MM-yyyy  ;
FormatTime,Luxemburg_de , %time% L0x1007, dddd MMMM dd-MM-yyyy  ;
FormatTime,Luxemburg_de2, %time% L1007  , dddd MMMM dd-MM-yyyy  ;  <<< falsch
FormatTime,Luxemburg_fr , %time% L0x140c, dddd MMMM dd-MM-yyyy  ;
FormatTime,Luxemburg_fr2, %time% L140c  , dddd MMMM dd-MM-yyyy  ;  <<< falsch
FormatTime,Finland      , %time% L0x1035, dddd MMMM dd-MM-yyyy  ;  <<< falsch
FormatTime,Finland_2    , %time% L1035  , dddd MMMM dd-MM-yyyy  ;

msgbox,,VALUES, % ""
    . "japan=" . japan . "`n"
    . "konkani=" . konkani . "`n"
    . "US_en=" . US_en . "`n"
    . "Frysland=" . Frysland . "`n"
    . "Nederland=" . Nederland . "`n"
    . "Afrikaans=" . Afrikaans . "`n"
    . "Luxemburg_de=" . Luxemburg_de . "`n"
    . "Luxemburg_de2=" . Luxemburg_de2 . "`n"
    . "Luxemburg_fr=" . Luxemburg_fr . "`n"
    . "Luxemburg_fr2=" . Luxemburg_fr2 . "`n"
    . "Finland=" . Finland . "`n"
    . "Finland_2=" . Finland_2 . "`n"
exitapp

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by BoBo » 07 May 2020, 04:21

Danke just me :thumbup:

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by just me » 07 May 2020, 03:46

Moin @BoBo,

in AHK 1.1 wird der Inhalt von (fast?) allen AHK-Variablen intern als String gekennzeichnet. Führende Nullen verschwinden erst, wenn man mit den Werten rechnet.

AHK 1.1 Arrays dagegen legen alle Werte, die als Integerwert interpretiert werden können, als 'Integer Key' an und enfernen dabei 'unnütze' führende Nullen.

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by BoBo » 07 May 2020, 02:33

Die Kürzel (de,en,jp) habe ich einfach willkürlich gewählt, um eine Zuordnung im objArray vornehmen zu können. Da es, laut deiner Liste, offensichtlich fixe Definitionen dsbzgl gibt, sollte man/frau diese dann auch bevorzugt verwenden. Damit wären Wissende in der Lage täglich dutzende Male beliebige Sprachen nachzutragen! :P
Quasi eine Sprach-Olympiade :lol:

Wie in der AHK-Hilfe zur Language_Code Tabelle angegeben, retourniert die Variable A_Language den der lokal verwendeten Spracheinstellung entsprechenden vierstelligen Code. Eine (Rückwärts)referenzierung über einen String wie "Arabic_Jordan" (oder ein etwaiges Kürzel) findet per default IMHO nicht statt. Und was das Retournieren von "brauchbaren" Konvertierungen betrifft - falls es im Japanischen keine Entsprechung für den Deutschen "Mai" gibt, wird hier (so steht zu vermuten) die Monatszahl stattdessen übergeben. Evtl, hängt dies aber auch mit meiner AHK-Version zusammen, falls hier Zeichen dargestellt werden sollen die deren Interpreter per default nicht interpretiert?? TBH, I don't know!

8-)

PS. Interessant wäre es zu erfahren, warum die führende Null des Language-Codes, retourniert aus dem objArray, abgeschnitten wird.
Wird stattdessen die 'A_Language'-Variable verwendet bleibt deren vierstelliger Code (mit ebenfalls führender Null) unversehrt. Irgendwie schräg.

@gerry
In der Zeile für Japan das language_code-setting von L0411 nach L0x0411 wechseln?

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by garry » 07 May 2020, 01:56

danke für scripts
@BoBo , eine Frage : bei japanisch zeigt mir Monatszahl an ( 5 )
hier steht dass LanguageCode = ja heisst ( statt jp ) , funktioniert aber auch nicht
https://www.science.co.il/language/Locale-codes.php

hmm... bei mir fehlt was , hier Finland = OK , Japan= leer

Code: Select all

Time := A_Now
FormatTime,suomi, %time% L1035, dddd MMMM dd-MM-yyyy  ;-- SF 1035 suomi finland
FormatTime,here , %time%      , dddd MMMM dd-MM-yyyy  ;
msgbox,Language-Code Suomi Finland 1035 = %suomi%`nLanguage-Code here %a_language% = %here%
;--------------------------------------------------------
FormatTime,japan, %time% L0411, dddd MMMM dd-MM-yyyy  ;-- 
FormatTime,here , %time%      , dddd MMMM dd-MM-yyyy  ;
msgbox,Language-Code Japan 0411 = %japan%`nLanguage-Code here %a_language% = %here%
return

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by BoBo » 06 May 2020, 15:11

Die Language_Code-Option ist schon reichlich elegant! Super :thumbup:
Hatte das etwas rustikaler über ein objArray versucht ... (function für beliebigen Sprachwechsel anbei)

Code: Select all

#SingleInstance, Force

mObj		:= {"Mär" : "Mar", "Mai" : "May", "Okt" : "Oct", "Dez" : "Dec"}

date := A_Now
wDay := A_WDay
Random, addDays, 1, 3
EnvAdd, date, addDays, Days

FormatTime, dd,% date, dd-MMM
MsgBox % "Reply " . StrReplace(dd, SubStr(dd,-2), ObjRawGet(mObj, SubStr(dd,-2))) . "// "

FormatTime, dd,% date " L0x0809", dd-MMM
MsgBox % "Reply " . dd . "// "

MsgBox % lngTime(date,"dd-MMM")        		; the PCs language setting is used by default if language parameter gets omited. But TBH, this renders this function useless.
MsgBox % lngTime(date,"dd-MMM","en")        ; the date format will use English
MsgBox % lngTime(date,"dd-MMM","ja")        ; the date format will use Japanese

lngTime(date,format,lng:="local") {											                            ; https://www.autohotkey.com/docs/misc/Languages.htm
	lngObj		:= {"local" : A_Language, "en" : "0809","de" : "0407","ja" : "0411"}					; creating language object array, leading '0' gets omitted (!?), therefore labled as a string.
	FormatTime, res,% date " L0x" . ObjRawGet(lngObj, lng),% format
	Return res
}
[Edited language/country acronym (from "jp" to "ja") as advised by gerry below] :thumbup:

Re: Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec)

Post by LuckyJoe » 06 May 2020, 13:12

Hi,

du kannst den Sprachcode bei der Zeitformatierung verwenden:

FormatTime, Heute, L0x0809, dd-MMM

Language Codes: https://www.autohotkey.com/docs/misc/Languages.htm

Englisches Datumsformat anzeigen (z.B. aus Mai/Dez wird May/Dec) - oder andere Länderformate

Post by Jakobus » 06 May 2020, 11:13

An die Freunde von AutoHotkey,

suche eine Möglichkeit, im Code weiter unten das Datumsformat umzustellen.
Vom Deutschen ins Englische Format.

Der Code schreibt in die Betreffzeile von Outlook - ausgelöst durch STRG + R - das Datum von Morgen und springt am Freitag auf Montag.
Das soll weiter so bleiben.

Der Code schreibt
Reply 07-Mai //

Gewünscht ist
Reply 07-May //

Also statt (DEUTSCH) Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez
Gewünscht (ENGLISCH) Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec

Dabei möchten die Einstellungen in Windows 10 unter Region bzw Reginonales Format nicht berührt werden.
Stattdessen wünsche ich mir die Anpassung im Code.

Danke im Voraus für die freundliche Hilfe.

Code: Select all

#IfWinActive, ahk_class rctrl_renwnd32 	; ahk_class zu finden über Window Spy - steht für ein neues geöffnetes E-Mail Fenster unter Outlook 2016
~^r::								; STRG + R

Heute = %A_Now%						; Schreibe das aktuelle Datum in die Variable Morgen
Wochentag := A_WDay 					; Der aktuelle 1-stellige Wochentag (1-7). 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 aktuelle Datum
FormatTime, Heute, %Heute%, dd-MMM		; Formatiere die Datumsanzeige wie folgt: 10.07.2019

Send, Reply %Heute% //{Space}				; Gibt das Ergebnis aus und und hänge // mit Leerzeichen dahinter

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

return
 
; Der Befehl return schließt das Makro ab und beendet hier die Skriptausführung. 
; In einem Skript, das nur aus dem gezeigten Hotstring besteht, wäre er überflüssig. 
; In der Regel definiert man in einem Skript aber mehrere Hotstrings oder Hotkeys. 
; Technisch sind diese nichts anderes als Labels, also Sprungmarken. 
; Ohne das return würde das Skript einfach weiterlaufen und den zum nächsten Eintrag gehörenden Code auch noch ausführen.

Top