现在测试是否介于午夜的两次之间



我试过搜索这个,但我不知所措。。。我可以找到其他语言的答案,但不能找到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

如果这纯粹是关于一天中的时间,并且您不需要任何日期计算,那么您可以执行以下操作,因为对于填充的数字字符串词汇排序等于数字排序:

# 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'

如果你必须检查你是否在23:00-04:00的范围内,穿过午夜,你可以:

$now=(Get-Date).TimeofDay
if ($now.TotalHours -ge 23 -or $now.TotalHours -lt 04)
{"In Range"}
else
{"Out of range"}

最新更新