Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата solonenko:
А почему "правильнее" »
Потому что командлет Get-Date, несмотря на своё название, возвращает дату-время (тип System.DateTime). Текущую дату и текущее время (некий аналог функции Now() в VBScript/VB/VBA). И в методе .AddDays(…) задействуется всё значение, а не только дни. Посему, при целом значении аргумента метода, количество дней увеличивается или уменьшается, а значение времени остаётся прежним. При дробном значении аргумента количество дней может как меняться, так и оставаться прежним, а вот значение времени заведомо изменится:
Код: Выделить весь код
PS C:\> Get-Date
среда, 19 февраля 2020 года 17:30:06

PS C:\> (Get-Date).AddDays(-1)
вторник, 18 февраля 2020 года 17:30:11

PS C:\> (Get-Date).AddDays(-0.5)
среда, 19 февраля 2020 года 05:30:18
Свойство .Date класса System.DateTime возвращает значение того же самого типа System.DateTime, но с приведённым к нулю значением времени:
Код: Выделить весь код
PS C:\> (Get-Date).Date
среда, 19 февраля 2020 года 00:00:00
Статическое свойство .Today того же самого класса System.DateTime также возвращает значение типа System.DateTime с текущей датой и с приведённым к нулю значением времени.

И посему «вчера» (.AddDays(-1)) в вышеприведённых коллегой Busla кодах будет означать «сутки назад, считая от нуля часов нуля минут сегодняшнего числа».

Отправлено: 17:39, 19-02-2020 | #7