samtrex
Goto Top

Kalenderwoche in Powershell - wechselt Donnerstags - dieses Jahr

Hallo zusammen,
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

Content-ID: 307020

Url: https://administrator.de/contentid/307020

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

colinardo
Lösung colinardo 13.06.2016 aktualisiert um 16:09:58 Uhr
Goto Top
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.
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)
Willst du stattdessen fest die deutsche Kalenderwoche nach ISO 8601 egal was das Gebietsschema sagt, reicht auch ein:
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.Calendar.GetWeekOfYear((get-date),2,1)
Grüße Uwe

siehe auch
Calendar.GetWeekOfYear-Methode (DateTime, CalendarWeekRule, DayOfWeek)
SamTrex
SamTrex 13.06.2016 um 16:44:01 Uhr
Goto Top
Hallo Colinardo,
vielen Dank für Deine schnelle und überaus erhellende Lösung. Ich habe es direkt übernommen.

Bugs ... tz!

Gruß Sam