Есть несколько способов, которыми это может быть достигнуто, самый простой, который я могу придумать, но также немного «быстрый и грязный» подход:
$string = "12/11/2018 10:20 AM Submitted for approval by Joseph Star 12/11/2018 12:00 PM "
[datetime]$date1 = ($string -split " ")[0..2] -join " "
[datetime]$date2 = ($string -split " ")[-4..-1] -join " "
По сути, просто -split
в массив, используя пробелы " "
, возьмите первые 3 элемента ([0..2]
) из этого массива и затем -join
верните их обратно в строку перед приведением к [datetime]
.Аналогично для второй даты, но возьмите последние 3 элемента ([-4..-1]
) из массива.
При желании вы можете сжать его в 1 строку:
[datetime]$date1,[datetime]$date2 = (($string -split " ")[0..2] -join " "),(($string -split " ")[-4..-1] -join " ")
Который выводит:
[Fri 21 Dec 00:28:26] PS C:\WINDOWS\system32>$date1
11 December 2018 10:20:00
[Fri 21 Dec 00:30:01] PS C:\WINDOWS\system32>$date2
11 December 2018 12:00:00
Если строки когда-либо изменяются или даты не всегда являются первыми 3 или 3 последними наборами последовательных символов, то это не будет работать.