测试现在是否在跨越午夜的两次之间
Testing if now if between two times that span midnight
我试过搜索此内容,但不知所措...我可以找到其他语言的答案,但找不到 PowerShell 的答案。
基本上,我想测试现在的时间是否在21:15和5:45之间。
我很确定我需要使用 New-TimeSpan - 但是,对于我来说,我就是无法解决它。
我会分享我的测试代码,但我认为我离答案太远了,它不会有任何帮助。
谁能帮帮我?
使用Get-Date
创建DateTime
对象,将这些阈值描述为今天日期的时间点,然后测试现在的时间是在早点之前还是在晚点之后:
$now = Get-Date
$morning = Get-Date -Date $now -Hour 5 -Minute 45
$evening = Get-Date -Date $now -Hour 21 -Minute 15
$isWithinRange = $now -le $morning -or $now -ge $evening
如果这纯粹是关于一天中的时间并且您不需要任何日期计算,你可以执行以下操作,依赖于填充数字 strings 词法排序等于数字排序的事实:
# Get the current point in time's time of day in 24-hour ('HH') format.
# Same as: [datetime]::Now.ToString('HH\:mm')
$timeNow = Get-Date -Format 'HH\:mm'
$timeNow -ge '21:15' -or $timeNow -le '05:45'
我试过搜索此内容,但不知所措...我可以找到其他语言的答案,但找不到 PowerShell 的答案。
基本上,我想测试现在的时间是否在21:15和5:45之间。
我很确定我需要使用 New-TimeSpan - 但是,对于我来说,我就是无法解决它。
我会分享我的测试代码,但我认为我离答案太远了,它不会有任何帮助。
谁能帮帮我?
使用Get-Date
创建DateTime
对象,将这些阈值描述为今天日期的时间点,然后测试现在的时间是在早点之前还是在晚点之后:
$now = Get-Date
$morning = Get-Date -Date $now -Hour 5 -Minute 45
$evening = Get-Date -Date $now -Hour 21 -Minute 15
$isWithinRange = $now -le $morning -or $now -ge $evening
如果这纯粹是关于一天中的时间并且您不需要任何日期计算,你可以执行以下操作,依赖于填充数字 strings 词法排序等于数字排序的事实:
# Get the current point in time's time of day in 24-hour ('HH') format.
# Same as: [datetime]::Now.ToString('HH\:mm')
$timeNow = Get-Date -Format 'HH\:mm'
$timeNow -ge '21:15' -or $timeNow -le '05:45'