Преобразовать формат даты гггг / мм / дд / чч / мм / сс в объект даты и времени в PowerShell - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь взять дату, полученную из системы Linux, в виде строки в формате yyyy/MM/dd/hh/mm/ss, и я хотел бы преобразовать ее в объект PowerShell для datetime.Я пытался использовать метод ParseExact, но здесь что-то не хватает, потому что я продолжаю получать сообщение о том, что формат DateTime недопустим.Может быть, я иду по этому пути совершенно неправильно.Любые предложения?

$DateTimeObject = [datetime]::ParseExact('2018/05/21/14/08/17',"yyyy/MM/dd/hh/mm/ss",$null)

Исключение вызывает "ParseExact" с аргументом (ами) "3": "Строка не была распознана как допустимый DateTime."В строке: 1 символ: 1 + [datetime] :: ParseExact ('2018/05/21/14/08/17', "гггг / мм / дд / чч / мм / сс", $ n ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: FormatException

Ответы [ 2 ]

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

Вы могли бы написать свою собственную функцию синтаксического анализа:

function ConvertTo-DateTime([string] $datetime) {
    $arr = $datetime -split '/'
    return [datetime](($arr[0..2] -join '-'), ($arr[3..5] -join ':') -join ' ')
}
0 голосов
/ 21 мая 2018

Ваша строка даты имеет 14 для часа, который использует 24-часовое время.hh однако поддерживает только часы в диапазоне 01-12.Вместо этого вам нужно использовать прописные буквы HH:

$DateTimeObject = [datetime]::ParseExact('2018/05/21/14/08/17',"yyyy/MM/dd/HH/mm/ss",$null)
#                                                                          ^^

Список всех действительных кодов формата можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...