Get-Date And AddDays Automaticly change Format of date and make Error !

“mm” stand’s for minutes
“MM” stand’s for month

Ok i’ ve found for the date, it’s a bad mistake !

After looking this script :

 

 [String]$Start = $DateStart
    $StartTimeJ += (New-TimeSpan -Start ($DateStart.Split(" ")[0]) -End $DateStart).TotalSeconds 
    $StopTimeJ += (New-TimeSpan -Start $DateStart -End $DateStop).TotalSeconds

The Variable is not using correctly there is a melting pot with this variable ($Start and $DateStart and $DateStop)
Now it’s ok :

$Start = "03/02/2020 16:00"
$Stop = "04/02/2020 06:00"
$StopHebdo = "07/02/2020 06:00"
$StartTimeJ = @()
$StopTimeJ = @()
$NbJourDiff = (New-TimeSpan -start $Start -End $StopHebdo).Days
Write-Host "DiffJour: $JourDiff"
$StartTime= ""
$i = 0
While($i -le $NbJourDiff){
    Write-Host ""
    Write-Host "Value of i : $i"
    Write-Host "StartTime - before AddDays: $StartTime"
    $StartTime = (Get-Date $Start).AddDays($i).ToString('dd/MM/yyyy HH:mm')
    $StopTime = (Get-Date $Stop).AddDays($i).ToString("dd/MM/yyyy HH:mm")
    Write-Host "StartTime - After AddDays: $StartTime"
    Write-Host "StopTime - After AddDays: $StopTime"
    Write-Host " " 
    $StartTimeJ += (New-TimeSpan -Start ($StartTime.Split(" ")[0]) -End $StartTime).TotalSeconds 
    Write-Host "StartTime: $StartTimeJ"
    $StopTimeJ += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds
    Write-Host "StoptTimeJ: $StopTimeJ"
    $i++
}

Result:

DiffJour: 3

Value of i : 0
StartTime - before AddDays: 
StartTime - After AddDays: 03/02/2020 16:00
StopTime - After AddDays: 04/02/2020 06:00
 
StartTime: 57600
StoptTimeJ: 50400

Value of i : 1
StartTime - before AddDays: 03/02/2020 16:00
StartTime - After AddDays: 04/02/2020 16:00
StopTime - After AddDays: 05/02/2020 06:00
 
StartTime: 57600 57600
StoptTimeJ: 50400 50400

Value of i : 2
StartTime - before AddDays: 04/02/2020 16:00
StartTime - After AddDays: 05/02/2020 16:00
StopTime - After AddDays: 06/02/2020 06:00
 
StartTime: 57600 57600 57600
StoptTimeJ: 50400 50400 50400

Value of i : 3
StartTime - before AddDays: 05/02/2020 16:00
StartTime - After AddDays: 06/02/2020 16:00
StopTime - After AddDays: 07/02/2020 06:00
 
StartTime: 57600 57600 57600 57600
StoptTimeJ: 50400 50400 50400 50400

But if you have advice for another way to do this command i’m listening to you :wink:

 

Anyway Again thx a lot Olaf!

Sam i have note this idea for other things, so thx to you :wink:

Its so beautifull my script but doesn’t work becayse i have no reference to day…i’m fucked.

I need to see how to do…

OK,just for information, this is the script working good :wink:

 


$Start = “03/02/2020 16:00”
$Stop = “04/02/2020 06:00”
$StopHebdo = “07/02/2020 06:00”
$StartTimeJ = @(" “,” “,” “,” “,” “,” “,” “)
$StopTimeJ = @(” “,” “,” “,” “,” “,” “,” ")
$NbJourDiff = (New-TimeSpan -start $Start -End $StopHebdo).Days
Write-Host “DiffJour: $JourDiff”
$StartTime= “”
$i = 0

While($i -le $NbJourDiff){
Write-Host “”
Write-Host “Value of i : $i”
Write-Host “StartTime - before AddDays: $StartTime”
$StartTime = (Get-Date $Start).AddDays($i).ToString(‘dd/MM/yyyy HH:mm’)
$JourStartTime = (Get-Date $StartTime).DayOfWeek
Write-Host “DaysofWeek: $JourStartTime”
Switch($JourStartTime){
Sunday{$StartTimeJ[0] += (New-TimeSpan -Start ($StartTime.Split(" “)[0]) -End $StartTime).TotalSeconds}
Monday{$StartTimeJ[1] += (New-TimeSpan -Start ($StartTime.Split(” “)[0]) -End $StartTime).TotalSeconds}
Tuesday{$StartTimeJ[2] += (New-TimeSpan -Start ($StartTime.Split(” “)[0]) -End $StartTime).TotalSeconds}
Wednesday{$StartTimeJ[3] += (New-TimeSpan -Start ($StartTime.Split(” “)[0]) -End $StartTime).TotalSeconds}
Thursday{$StartTimeJ[4] += (New-TimeSpan -Start ($StartTime.Split(” “)[0]) -End $StartTime).TotalSeconds}
Friday{$StartTimeJ[5] += (New-TimeSpan -Start ($StartTime.Split(” “)[0]) -End $StartTime).TotalSeconds}
Saturday{$StartTimeJ[6] += (New-TimeSpan -Start ($StartTime.Split(” ")[0]) -End $StartTime).TotalSeconds}
}
$StopTime = (Get-Date $Stop).AddDays($i).ToString(“dd/MM/yyyy HH:mm”)
$JourStopTime = (Get-Date $StopTime).DayOfWeek
Switch($JourStopTime){
Sunday{$StopTimeJ[0] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
Monday{$StopTimeJ[1] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
Tuesday{$StopTimeJ[2] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
Wednesday{$StopTimeJ[3] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
Thursday{$StopTimeJ[4] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
Friday{$StopTimeJ[5] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
Saturday{$StopTimeJ[6] += (New-TimeSpan -Start $StartTime -End $StopTime).TotalSeconds}
}
Write-Host “StartTime - After AddDays: $StartTime”
Write-Host “StopTime - After AddDays: $StopTime”
Write-Host " "
Write-Host “StartTimeJ: $StartTimeJ”
Write-Host “StoptTimeJ: $StopTimeJ”
$i++
}

Have a good evening you both :wink:

No does’nt work…

Yes yes it’s work :wink:

See you :wink: