Каждый раз, когда вы запрашиваете текущую дату (Get-Date, DateTime.Now, etc), вы получите дату на момент выполнения команды. А если у вас таких команд Get-Date много разбросано по скрипту, то, конечно, рано или поздно произойдет так, что они выдадут разные даты. Поэтому есть простой best practice при работе с датами: сохраните текущее значение Get-Date в переменную и потом работайте только с этой переменной.
Собственно в функции это и сделал. А код из которого получилась статья получился по принципу, добавить быстро, для удобства. Но сегодня что-то зацепило, и решил подумать.
Просто не сразу осознается, что запрос даты на коротких дистанциях в коде может привести к таким большим расхождениям. )
Статья не только о работе с датами.
И как итог есть решение, где можно брать дату более одного раза, но с занулением всех значений, во избежание ошибок.
Get-Date берет день только 1 раз.
Вот если, последний день месяца и 23:59:59.999… Тут да, некрасиво получится — ожидается получить 0, а код выдаст или 30 или 29…
О разных тиках замолвите слово или как не получить ошибку в Powershell при работе с Get-Date