Разбор и переформатирование строки даты с помощью PowerShell

2573
Bjørn H. Sandvik

Дан CSV-файл, содержащий следующую строку:

ГОЛОВКА; 1; 49999; 8-10-2017 ;;;

.. Мне нужно переформатировать дату, заданную как dm-гггг, в фиксированную длину дд.мм.гггг и / или гггг-мм-дд (фиксированная, естественно подразумевающая двузначный день и месяц)

Хотя я вижу большую часть хитрости в PowerShell, я нахожу его довольно громоздким. Любая помощь очень ценится!

0
Предполагая, что вы уже знаете, как импортировать CSV-файл в PowerShell, это должно указать вам правильное направление: `Get-Date 8-10-2017 -Format" MM.dd.yyyy "` whatever 6 лет назад 1
Это работает как очарование, за исключением того, что оно неправильно интерпретирует расположение исходного дня и месяца. 8-10 означает 8 октября, а не 10 августа, это то, что выдает командлет. Bjørn H. Sandvik 6 лет назад 0
В этом случае вам нужно будет указать в PowerShell, какой набор настроек культуры использовать: `$ Culture = New-Object system.globalization.cultureinfo 'en-us'; Get-Date ([datetime] :: parse ("8-10-2017", $ Culture)) -Формат dd.MM.yyyy` whatever 6 лет назад 1
Мне очень нравится PowerShell. Спасибо за полное и отличное решение, что угодно! Bjørn H. Sandvik 6 лет назад 0

1 ответ на вопрос

0
Jeff Zeitlin

По сути, это была проблема, решаемая «Идеей PowerTip дня» от 12 октября 2017 года . Представленное решение состояло в том, чтобы использовать ParseExactметод DateTimeкласса .NET . Предполагая, что вы извлекли дату из CSV и сохранили ее в переменной $ActionDateString, вы затем преобразовали бы ее в DateTimeобъект:

$DT = [DateTime]::ParseExact($ActionDateString, "dd-MM-yyyy", $null) 

и тогда вы можете использовать DateTimeобъект, $DTкак вам угодно.

Похожие вопросы