PowerShell:
Сравнение двух дат

Как это сделать:

# Давайте возьмем текущую дату
$today = Get-Date

# А вот произвольная дата
$someOtherDate = Get-Date "2023-03-17"

# Они равны?
$today -eq $someOtherDate

# Сегодняшняя дата больше (позже), чем другая?
$today -gt $someOtherDate

# Как насчет проверки, если она раньше?
$today -lt $someOtherDate

# Давайте посмотрим результаты, хорошо?

False
True
False

Погружение в детали

Еще в каменном веке компьютирования — не совсем, но, вы понимаете, в ранние дни — даты были запутанными. Мы проделали долгий путь со стандартизацией, и PowerShell упрощает это еще больше.

Вот что стоит усвоить:

  1. История: Компьютеры раньше обрабатывали даты в разных форматах, что приводило к возможной путанице и ошибкам в стиле Y2K. PowerShell полагается на структуру DateTime из .NET, избегая такого хаоса.

  2. Альтернативы: Вы также можете использовать Compare-Object или использовать методы из объектов [datetime] вроде .AddDays(), чтобы выполнить вычисления перед сравнением. Не забудьте использовать Measure-Command, чтобы проверить влияние на производительность.

  3. Детали реализации: Даты в PowerShell являются объектами со своими свойствами и методами. Сравнение дат выполняется с использованием операторов (-eq, -lt, -gt), и, благодаря перегрузке операторов, PowerShell знает, что вы имеете дело с датами, а не просто со строками или числами.

На уровне сборки сравнение дат транслируется в тики (интервалы в 100 наносекунд с 1/1/0001). Таким образом, вы, по сути, сравниваете большие целые числа, что является эффективным.

Смотрите также