web-dev-qa-db-ja.com

PowerShellで文字列を日時に変換する

PowerShellを使用して、文字列を日時に変換しようとしています。簡単なはずですよね?

CSVインポートから文字列を取得していますが、Jul-16の形式になっています。 yyyy-MM-ddである必要な形式に変換する方法をいくつか試しましたが、現在次の方法を使用しています。

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

しかし、私はエラーを受け取ります:

文字列は有効なDateTimeとして認識されませんでした。

何か不足していますか?

15
Silentbob

ParseExactには、解析したい日付の形式が通知されます。取得したい形式ではありません。

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

その後、日付文字列を出力する場合:

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

クリス

24
Chris Dent

形式を指定する必要があります既に持っています、それを解析するために:

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

これで、必要な形式で出力できます。

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

または

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

以下が役立つことを願っています!

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

タイプが変換されるようになりました。メソッドを使用するか、任意のプロパティにアクセスできます。

Example :$Format_date.AddDays(5)
0
Aameer