Изменить строковую дату на желаемый формат - PullRequest
0 голосов
/ 04 мая 2018

Я хочу узнать дату в почтовом файле, чтобы я мог добавить ее к имени файла. Для этого я прочитал 4 строки почтового файла, в котором указана дата получения почты. Дата пишется в этом формате по почте:

Вт, 1 мая 2018 г. 15:56:12 + 0200

Я хотел бы иметь его в следующем формате:

yyyy_mm_dd_hh_mm

Это код, который я использую, чтобы изменить дату, чтобы она выглядела больше как нужный мне формат.

cd C:\Temp\Test
$date = Get-Content RemoteBackupServer.eml | Select -Index 3
$date = $date.Trim()
$date = $date -replace 'Mon, |Tue, |Wed, |Thu, |Fri, |Sat, |Sun, ',''
$date = $date -replace ' Jan ','.01.'
$date = $date -replace ' Feb ','.02.'
$date = $date -replace ' Mar ','.03.'
$date = $date -replace ' Apr ','.04.'
$date = $date -replace ' May ','.05.'
$date = $date -replace ' Jun ','.06.'
$date = $date -replace ' Jul ','.07.'
$date = $date -replace ' Aug ','.08.'
$date = $date -replace ' Sep ','.09.'
$date = $date -replace ' Oct ','.10.'
$date = $date -replace ' Nov ','.11.'
$date = $date -replace ' Dec ','.12.'
$date = $date -replace '*:\d+ ',''
Write-Host $date

И вот результат, который я получаю с моим кодом.

1.05.2018 15:56:12 + 0200

Но в последней строке я получаю сообщение об ошибке «FullyQualifiedErrorId: InvalidRegularExpression».

Может ли кто-нибудь помочь мне получить дату в формате, который я упоминал выше?

Edit:

Вот код для переименования файлов, если кому-то интересно:

cd C:\Temp\Test\Test2
$mails = Get-ChildItem -Filter *.eml

for ($i=0; $i -lt $mails.Count; $i++) {
    $mail = $mails[$i].FullName
    $date = Get-Content $mail | Select -Index 3
    $date = $date.Trim()
    $date = (Get-Date $date).ToString('yyyy_MM_dd_HH_mm')
    $extension = $date + '.eml'
    $mail | Rename-Item -NewName {$mail.Replace('.eml',"$extension")}
}

1 Ответ

0 голосов
/ 04 мая 2018

Использовать Get-Date и строки формата

(Get-Date 'Tue, 1 May 2018 15:56:12 +0200').ToString('yyyy_MM_dd_hh_mm')

Чтобы получить 24 часа (это описано в ссылке на строки формата):

(Get-Date 'Tue, 1 May 2018 15:56:12 +0200').ToString('yyyy_MM_dd_HH_mm')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...