文字列から日付をパースする

PowerShell:
文字列から日付をパースする

方法:

PowerShellはGet-Dateコマンドレットと[datetime]タイプアクセラレータを使用して文字列から日付を解析することを簡単にします。これらは標準的な日付フォーマットに対してはうまく機能します。より複雑な、または非標準の日付文字列については、[datetime]::ParseExactメソッドを利用して正確なフォーマットを指定することができます。

Get-Date[datetime]の使用:

# Get-Dateを使用したシンプルな変換
$stringDate = "2023-04-01"
$date = Get-Date $stringDate
echo $date

サンプル出力:

2023年4月1日 土曜日 0:00:00
# タイプアクセラレータ[datetime]の使用
$stringDate = "April 1, 2023"
$date = [datetime]$stringDate
echo $date

サンプル出力:

2023年4月1日 土曜日 0:00:00

非標準フォーマットのための[datetime]::ParseExactの使用:

自動的に認識されないフォーマットの場合、正確な解析を保証するために正確なフォーマットを定義できます。

$stringDate = "01-04-2023 14:00"
$format = "dd-MM-yyyy HH:mm"
$culture = [Globalization.CultureInfo]::InvariantCulture
$date = [datetime]::ParseExact($stringDate, $format, $culture)
echo $date

サンプル出力:

2023年4月1日 土曜日 14:00:00

サードパーティーライブラリの活用

PowerShell自身は日付の解析に非常に強力ですが、非常に複雑なシナリオや追加の機能については、NodaTimeのような.NETライブラリを探索することもあります。ただし、多くの典型的なユースケースでは、PowerShellのネイティブ機能で十分です。

# 例示のためにNodaTimeを使用していますが、ライブラリをプロジェクトに追加する必要があります
# Install-Package NodaTime -Version 3.0.5
# NodaTimeを使用して日付を解析する
[string]$stringDate = "2023-04-01T14:00:00Z"
[NodaTime.Instant]::FromDateTimeUtc([datetime]::UtcNow)
[NodaTime.LocalDate]$localDate = [NodaTime.LocalDate]::FromDateTime([datetime]::UtcNow)
echo $localDate

サンプルノート: 上記のコードは概念的な説明です。実際には、NodaTimeがプロジェクトに正しく追加されて、タイプとメソッドが利用可能になるようにしてください。