26. september 2012 - 20:47
Der er
1 kommentar og
1 løsning
Powershell: find ugenummer og find ugedagen som nummer
Hej Eksperten
Er der nogen der ligger inde med 2 powershell funktioner (eller kommandoer) der returnere:
1. Det ugenummer på året som man er i lige nu? Jeg har prøvet "Get-Date -UFormat %V" som virker fint, lige indtil det bliver lørdag, hvorefter den skifter til næste ugenummer. Ugen skal gå fra mandag til søndag...
2. Ugedagen reprænsenteret som et tal. Mandag = 1, Onsdag = 3 og søndag = 7.. Jeg kunne nok godt selv skrive en if statement der løb igennem de forskellige valg, men tænker der må være en snild måde at gøre det på, som jeg ikke lige kender..
Tak :)
/Tripwire
26. september 2012 - 22:00
#1
Hej,
1.
Det er desværre ikke bare lige til, powershell sætter første dag i ugen til søndag og derved ikke følger ISO8601 standarden.
Prøv dette:
function ConvertTo-ISOWeekDate
{
param(
[Parameter(Position = 0, ValueFromPipeLine = $true)]
[DateTime]
$Date = [DateTime]::Today,
[Switch]
$WeekNumberOnly
)
process
{
[int]$dayOfWeek = $Date.DayOfWeek
if (-not $dayOfWeek)
{$dayOfWeek = 7}
$midWeek = $Date.AddDays(4 - $dayOfWeek)
$year = $midWeek.year
$week = [Math]::Ceiling($midWeek.DayOfYear / 7)
if ($WeekNumberOnly.IsPresent)
{
$week
}
else
{
'{1:00}' -f $year, $week, $dayOfWeek # '{0:0000}-W{1:00}-{2}' -f $year, $week, $dayOfWeek
}
}
}
$weeknr = ConvertTo-ISOWeekDate
write-host $weeknr
2.
Denne er lige til højreskøjten:
$date = Get-Date
$date.DayOfWeek.value__