Как я могу использовать переменную, содержащую дату, чтобы действовать как функция get-date в PowerShell? У меня есть переменная $ date, содержащая 2016-09-08. Я хочу вычесть один день из даты $. что-то типа:
$date = "2016-09-08"
$date.AddDays(-1)
Не работает.
5 ответов
«2016-09-08» - это строка. Вам нужно преобразовать его в объект datetime. Есть несколько способов сделать это, но ниже приведен пример передачи строки в командлет Get-Date.
$date = Get-Date "2016-09-08"
$date.AddDays(-1).ToString("yyyy-MM-dd")
См. Строки настраиваемого формата даты и времени для подробнее обо всех доступных вариантах.
Эта ветка мне очень помогла, и вот что я пытался сделать. Совместное использование, чтобы другие могли видеть больше вещей, которые вы можете сделать с помощью Get-Date и AddDays.
PS C:\Users\zzz> (Get-Date $date).AddDays(0).ToString("MMddyyyy")
07162019
PS C:\Users\zzz> (Get-Date $date).AddDays(-1).ToString("MMddyyyy")
07152019
Преобразование и вычитание одной строки.
(Get-Date $date).AddDays(-1)
Ваша переменная - String. запустите $date.gettype()
, он выведет строку.
$date = "2016-09-08"
$date.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Чтобы иметь возможность использовать функции datetime, вам нужна переменная datetime.
$date = get-date("2016-09-08")
$date.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Datetime System.Object
$date.adddays(-1)
Wednesday, September 7, 2016 12:00:00 AM
Тогда вы можете начать использовать форматирование по вашему выбору.
Расширение ответа Mani Live ... для использования в обычном командном файле:
for /F "usebackq" %%d in (`powershell -STA -ExecutionPolicy ByPass -command "echo ((Get-Date).AddDays(-10)).ToString(\"yyyy-MM-dd\")"`) do set ten_days_ago=%%d
Похожие вопросы
Связанные вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.