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がプロジェクトに正しく追加されて、タイプとメソッドが利用可能になるようにしてください。