Pull to refresh

Comments 8

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

какой-то совсем костыль получается

Да, согласен — с датами и временем в ПоШе надо быть аккуратными. Очень.

[datetime]::DaysInMonth((get-date).Year,(Get-Date).Month) - (get-date).day

А то. Ведь если код будет выполняться в 23:59:59.999, то Get-Date могут попасть на разные даты. Так рождаются глюки.

Get-Date берет день только 1 раз.
Вот если, последний день месяца и 23:59:59.999… Тут да, некрасиво получится — ожидается получить 0, а код выдаст или 30 или 29…

Тогда просто сохраняем в переменную и работаем!
Sign up to leave a comment.

Articles