I set up variables.
$script:current = [datetime]::Today
$r = 120
$global:eastern = [System.TimeZoneInfo]::convertTimeBySystemTimeZoneId([datetime]::Now, 'Eastern Standard Time')
How would I go abouts subtracting seconds from this oneliner?
$variable = (($script:current.DayOfWeek -match 'Monday|Tuesday|Wednesday|Thursday|Friday') -and $global:eastern.hour -eq 09 -and $global:eastern.Minute -eq 30 -and ([datetime]::Now.Second -eq 0))
This works, but trying to do so without an 'overload parsexact' error
$culture = [cultureinfo]::InvariantCulture
$format = 'HH:mm:ss'
$east = [datetime]::ParseExact('09:30:00',$culture,'AssumeUniversal, AdjustToUniversal').Addseconds(-$r)
[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($east, 'Eastern Standard Time')
CodePudding user response:
The overload error you're getting on .ParseExact(..) method is because you're missing the string Format argument:
$r = 120
$culture = [cultureinfo]::InvariantCulture
$format = 'HH:mm:ss'
$styles = [System.Globalization.DateTimeStyles]'AssumeUniversal, AdjustToUniversal'
[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId(
[datetime]::ParseExact('09:30:00', $format, $culture, $styles).Addseconds(-$r),
'Eastern Standard Time'
)
CodePudding user response:
If I understand you correctly, subtracting 2 minutes and returning a new [datetime]:
get-date; (get-date) - [timespan]'0:2:0'
Sunday, January 23, 2022 11:31:40 AM
Sunday, January 23, 2022 11:29:40 AM
