Как вы можете встроить формат даты в строку и заставить Powershell динамически заполнять дату и время, используя указанный формат? - PullRequest
0 голосов
/ 08 января 2019

У меня есть текст, в который я хотел бы вставить узнаваемую строку, содержащую желаемый формат даты.

Например, я хотел бы сохранить строку:

"Текущее время даты в желаемом формате:% date: yyyyMMdd%"

, но отображать его как

"Текущее время даты в нашем желаемом формате - 20190108"

$texttoreplace = "The current date time in our desired format is %date:yyyyMMdd%"
$texttoreplace -replace "(%DATE)(.*)(%)", (get-date -format $2)

Попытка пропустить вторую группу из -replace игнорируется.

Текущее время даты в нашем желаемом формате: 01/08/2019 13: 54: 07

Как можно проанализировать значение $ 2, чтобы был возвращен формат yyyyMMdd

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Это может быть более эффективный / чистый способ сделать это. просто используйте параметр -format get-date в качестве переменной и вызовите эту переменную в своем выводе:

$datetime = Get-date -Format yyyyMMdd
$dateformat = Write-Output -InputObject "The current date/time in our desired format is $datetime"
$dateformat

C:\> The current date/time in our desired format is 20190109

Я бы пошел еще дальше и фактически показал бы формат даты, так как ваш вывод не содержит различий между днями или месяцами, и это будет сбивать с толку и не будет явным, если текущая дата будет <12 для дней и месяцев: </p>

$datetime = Get-date -Format yyyyMMdd
$dateformat = Write-Output -InputObject "The current date/time in our desired format(yyyyMMdd) is $datetime"
$dateformat

C:\> The current date/time in our desired format(yyyyMMdd) is 20190109
0 голосов
/ 08 января 2019

Из того, что я могу сказать, вы не можете иметь вычисленное значение в -replace тексте замены. [ хмуриться ] однако вы можете использовать -match и автоматическую переменную $Matches, чтобы достичь того же конца. как то так ...

$texttoreplace = "The current date time in our desired format is %date:yyyyMMdd%"
[void]($texttoreplace -match '%date:(.*)%')
$AfterReplacement = $texttoreplace -replace '%date:.+%', (Get-Date -Format $Matches[1])

$AfterReplacement

вывод ...

The current date time in our desired format is 20190108
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...