Преобразовать строку в дату и время в PowerShell

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

Я получаю строку из импорта CSV, и она поступает в формате от Jul-16. Я пробовал несколько способов получить его в формате, который я хочу, это yyyy-MM-dd и в настоящее время я нахожусь в следующем.

$invoice = $object.'Invoice Month'
$invoice = "01-" + $invoice
$invoice = [datetime]::parseexact($invoice, 'yyyy-MM-dd', $null)

Но я получаю ошибку:

Строка не была распознана как действительный DateTime.

Я что-то пропустил?

Ответ 1

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

$invoice = '01-Jul-16'
[datetime]::parseexact($invoice, 'dd-MMM-yy', $null)

Если вы хотите вывести строку даты:

[datetime]::parseexact($invoice, 'dd-MMM-yy', $null).ToString('yyyy-MM-dd')

Крис

Ответ 2

Вам нужно указать формат, который у него уже есть, чтобы разобрать его:

$InvoiceDate = [datetime]::ParseExact($invoice, "dd-MMM-yy", $null)

Теперь вы можете вывести его в нужном вам формате:

$InvoiceDate.ToString('yyyy-MM-dd')

или же

'{0:yyyy-MM-dd}' -f $InvoiceDate

Ответ 3

$invoice = "Jul-16"
[datetime]$newInvoice = "01-" + $invoice

$newInvoice.ToString("yyyy-MM-dd")

Там вы идете, используйте ускоритель типа, но также и в новый var, если хотите использовать его в другом месте, используйте его так: $newInvoice.ToString("yyyy-MM-dd") как $newInvoice всегда будет в формате даты и времени, если вы не нажмете это как строка после, но потеряет способность выполнять функции datetime - добавление дней и т.д.

Ответ 4

Надеюсь ниже поможет!

PS C:\Users\aameer>$invoice = $object.'Invoice Month'
$invoice = "01-" + $invoice
[datetime]$Format_date =$invoice

Теперь тип конвертируется. Вы можете использовать метод или можете получить доступ к любому свойству.

Example :$Format_date.AddDays(5)

Ответ 5

введите описание изображения здесь

Цветовое кодирование HTML требуется через скрипт Power Shell:

Прикрепленное изображение выше - это мой вывод SQL, который должен быть выделен красным цветом, где дата отображается старше 5 дней.