Home > Mobile >  powershell datetime subtraction
powershell datetime subtraction

Time:01-24

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
  •  Tags:  
  • Related