Изоляция времени и даты в Powershell - PullRequest
0 голосов
/ 16 апреля 2019

У меня дата и время отформатированы следующим образом:

Get-Date -f "M/d/yyyy h:mm tt"

Что выглядит так

4/16/2019 4:19 PM

Итак, теперь я хочу выбрать только те, где время больше, чем8:00 AM и 5:00 PM ... но дата ничего не значит, я хочу, чтобы по каждой дате выбиралось одинаковое время.

Что мне нужно сделать, чтобы использовать выбор объекта where для времени, нобыть без разбора, когда дело доходит до даты?

1 Ответ

0 голосов
/ 16 апреля 2019

Вы всегда должны различать [datetime] и его локаль / пользовательские настройки в зависимости (строковое) представление.

Вы можете рассчитывать только с типом [datetime].Чтобы выделить компонент времени:

> ([datetime]::now).TimeOfDay


Days              : 0
Hours             : 19
Minutes           : 7
Seconds           : 8
Milliseconds      : 413
Ticks             : 688284139558
TotalDays         : 0,796625161525463
TotalHours        : 19,1190038766111
TotalMinutes      : 1147,14023259667
TotalSeconds      : 68828,4139558
TotalMilliseconds : 68828413,9558

Или аналогично

> (Get-Date).TimeOfDay


Days              : 0
Hours             : 19
Minutes           : 7
Seconds           : 34
Milliseconds      : 841
Ticks             : 688548416521
TotalDays         : 0,796931037640046
TotalHours        : 19,1263449033611
TotalMinutes      : 1147,58069420167
TotalSeconds      : 68854,8416521
TotalMilliseconds : 68854841,6521

Как только формат (Get-Date -f "h:m:s" или .ToString('T')) включается, вы получаете строку, которая сначаланеобходимо преобразовать обратно в [datetime].

В соответствии с ценной подсказкой @PetSerAls вы можете использовать:

$CheckDateTime = Get-Date
if(($CheckDateTime | 
    Where-Object TimeOfDay -ge (New-TimeSpan -Hours 8)  |
    Where-Object TimeOfDay -lt (New-TimeSpan -Hours 17) )){
      "{0:M/d/yyyy h:mm tt} is in working hours" -f $CheckDateTime
    } else {
      "{0:M/d/yyyy h:mm tt} is NOT in working hours" -f $CheckDateTime
    }

Чтобы проверить, попадает ли компонент TimeOfDay вопределенные рабочие часы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...