Kalenderwoche in Powershell - wechselt Donnerstags - dieses Jahr
Hallo zusammen,
Ich habe offensichtlich ein Verständnisproblem mit dem Powershell-Cmdlet get-date.
Heute (2016-06-13 Mo.) erhalte ich 24. Nach einem Blick in den Kalender, alles ok.
Stelle ich das Datum am Rechner auf 2016-06-16 (Do.) erhalte ich 25! Warum wechselt die KW mitten in der Woche?
In 2017 wechselt die KW dann am Samstag, soweit habe ich schon getestet. Demnach wechselt die KW einen Tag vor dem ersten Wochentag des Jahres. Sprich es wäre nur eine Zählweise. Aber %V ist doch die KW nach ISO. Auch mit %W (Zählt ab Montags) stimmt es nicht.
Ich nutze die Funktion für meine Logfiles. Da ist mir bei der heutigen Kontrolle aufgefallen das das KW24-Log (also seit heute) schon seit 2016-06-09 gefüllt wird.
Für einen Rat wie ich das richtigstellen kann bin ich euch dankbar.
Gruß Sam
Ich habe offensichtlich ein Verständnisproblem mit dem Powershell-Cmdlet get-date.
get-date -uformat %V
Heute (2016-06-13 Mo.) erhalte ich 24. Nach einem Blick in den Kalender, alles ok.
Stelle ich das Datum am Rechner auf 2016-06-16 (Do.) erhalte ich 25! Warum wechselt die KW mitten in der Woche?
In 2017 wechselt die KW dann am Samstag, soweit habe ich schon getestet. Demnach wechselt die KW einen Tag vor dem ersten Wochentag des Jahres. Sprich es wäre nur eine Zählweise. Aber %V ist doch die KW nach ISO. Auch mit %W (Zählt ab Montags) stimmt es nicht.
Ich nutze die Funktion für meine Logfiles. Da ist mir bei der heutigen Kontrolle aufgefallen das das KW24-Log (also seit heute) schon seit 2016-06-09 gefüllt wird.
Für einen Rat wie ich das richtigstellen kann bin ich euch dankbar.
Gruß Sam
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 307020
Url: https://administrator.de/contentid/307020
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Sam,
das ist ein Bug in dem CMDLet und berücksichtigt nicht das richtige Gebietsschema (CalendarRule und FirstDayOfWeek).
Hiermit erhältst du die korrekte Kalenderwoche für das aktuelle Datum und das aktuell eingestellte Gebietsschema.
Willst du stattdessen fest die deutsche Kalenderwoche nach ISO 8601 egal was das Gebietsschema sagt, reicht auch ein:
Grüße Uwe
siehe auch
Calendar.GetWeekOfYear-Methode (DateTime, CalendarWeekRule, DayOfWeek)
das ist ein Bug in dem CMDLet und berücksichtigt nicht das richtige Gebietsschema (CalendarRule und FirstDayOfWeek).
Hiermit erhältst du die korrekte Kalenderwoche für das aktuelle Datum und das aktuell eingestellte Gebietsschema.
function Get-WeekOfYear([datetime]$date){
$local = [System.Globalization.DateTimeFormatInfo]::CurrentInfo
return $local.Calendar.GetWeekOfYear($date,$local.CalendarWeekRule,$local.FirstDayOfWeek)
}
# Kalenderwoche es aktuellen Datums ausgeben
Get-WeekOfYear (get-date)
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.Calendar.GetWeekOfYear((get-date),2,1)
siehe auch
Calendar.GetWeekOfYear-Methode (DateTime, CalendarWeekRule, DayOfWeek)