PowerShell で ParseExact を使用して日付時刻を解析する方法

日付を PowerShell で扱う際、日付文字列を DateTime
オブジェクトに変換する必要がある場合があります。DateTime
操作を行うために日付文字列を使うことはできず、DateTime
オブジェクトが必要です。
この変換は重要であり、なぜなら日付文字列単体では DateTime
操作を行うには不十分だからです。私たちのチュートリアルは、PowerShell で文字列を DateTime
形式に解析して変換する方法についての包括的なガイダンスを提供することを目的としています。
PowerShell で DateTime
を解析するための ParseExact
メソッドの使用
DateTime
クラスの ParseExact
メソッドは、日付と時間の文字列を DateTime
形式に変換します。日付と時間の文字列パターンの形式は、指定された DateTime
オブジェクトの形式と一致しなければなりません。
ParseExact
の構文は以下の通りです:
[datetime]::ParseExact(string, format, provider)
パラメータ:
string
: 変換したい日付と時間の文字列形式。format
: 文字列の期待される形式を定義する正確な形式指定子。provider
: 文化特有のフォーマット情報を供給するオブジェクト。この場合、現在の文化を使用する場合はnull
でもかまいません。
簡単な日付の解析
次の例では、ParseExact
メソッドを使用して日付文字列を DateTime
オブジェクトに変換します。
$dateString = '24-Jan-2024'
$format = 'dd-MMM-yyyy'
$culture = $null # Using the current culture
# Parsing the date
$parsedDate = [datetime]::ParseExact($dateString, $format, $culture)
# Displaying the result
Write-Host "Parsed Date: $parsedDate"
このコードでは、最初に 24-Jan-2024
という日付文字列を定義します。これは、略称の月名を含む日-月-年形式の日付を表しています。この形式を dd-MMM-yyyy
形式指定子で指定します。
$culture
変数は $null
に設定されており、PowerShell にシステムの現在の文化設定を使用して日付を解析するように指示します。
ここでのコア機能は [datetime]::ParseExact($dateString, $format, $culture)
で、これは指定した $format
に従って $dateString
を解析します。解析後、文字列は DateTime
オブジェクトに変換され、$parsedDate
変数に格納されます。
最後に、Write-Host
を使用して解析された日付を表示します。これは、実際のシナリオで ParseExact
を使用するシンプルで効果的なデモです。
出力:
この出力は、文字列から作成された DateTime
オブジェクトを示しており、入力文字列に時間が指定されていなかったため、時刻はデフォルトで真夜中(00:00:00
)に設定されています。
特定の文化を使用
ParseExact
で特定の文化を使用することは、現在のシステム設定とは異なる文化の慣習に従ってフォーマットされた日付文字列を扱う際に重要です。このアプローチは、MM/dd/yyyy
と dd/MM/yyyy
形式で月と日が混同されることを防ぎます。
以下はシンプルな例です:
$dateString = '23/01/2024'
$format = 'dd/MM/yyyy'
$culture = [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR')
# Parsing the date
$parsedDate = [datetime]::ParseExact($dateString, $format, $culture)
# Displaying the result
Write-Host "Parsed Date: $parsedDate"
このコードスニペットでは、フランスの日付形式 dd/MM/yyyy
に従った日付文字列を解析することを目指しています。まず、日付文字列 23/01/2024
を定義します。
dd/MM/yyyy
形式は、アメリカで使用される MM/dd/yyyy
形式と混同されやすいことに注意してください。日付を 1 月 23 日として正しく解釈するためには、フランスの文化 ('fr-FR')
を指定します。
$culture
変数は [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR')
を使用して初期化され、解析操作のための文化的文脈が準備されます。そして、[datetime]::ParseExact($dateString, $format, $culture)
を呼び出して日付文字列を解析します。
最後に、Write-Host
を使用して解析された日付を表示し、指定された文化の文脈で入力文字列が正しく解釈される様子を示します。
出力:
この出力は、フランス文化の文脈で日付文字列の成功した解析を示しています。日付は 2024 年 1 月 23 日として正しく理解され、異なる月日順によって誤解されることはありません。
時間を含めた解析
PowerShell では、日付と時間を効率的に扱うことは重要なスキルであり、特に日付と時間の両方のコンポーネントを含む文字列を解析する際に重要です。DateTime
クラスの ParseExact
メソッドは、そのような文字列を解釈するのに適していますが、正確に形式を指定する必要があります。
日付と時間の両方を含む日時文字列を解析してみましょう:
$dateTimeString = '2024-01-23 14:30'
$format = 'yyyy-MM-dd HH:mm'
$provider = $null # Opting for the invariant culture
# Parsing the datetime
$parsedDateTime = [datetime]::ParseExact($dateTimeString, $format, $provider)
# Displaying the result
Write-Host "Parsed DateTime: $parsedDateTime"
この例では、国際規格(年-月-日および 24 時間制)でフォーマットされた日時文字列 2024-01-23 14:30
を扱います。$format
を yyyy-MM-dd HH:mm
に設定し、この構造に合わせます。
$provider
には $null
を選択し、不変の文化を使用することを示します。このアプローチは、日時形式が標準であり、文化に依存しない場合によく行われます。
重要なのは、[datetime]::ParseExact($dateTimeString, $format, $provider)
を実行する時であり、文字列を DateTime
オブジェクトに変換し、文字列からの日付と時間を保持します。
出力:
この結果は、入力文字列が正確に DateTime
オブジェクトに解析され、日付と時間の両方のコンポーネントをキャッチしていることを効果的に示しています。
PowerShell で DateTime
を解析するための明示的な型変換の使用
日付と時間の文字列を DateTime
形式にキャストすることも可能です。
この構文を使用して、文字列を DateTime
オブジェクトにキャストできます。
[DateTime]string
以下の例は、日付と時間の文字列表現をキャスト式を用いて DateTime
オブジェクトに変換します。
$strDate = "2022-06-11 09:22:40"
[DateTime]$strDate
PowerShell のコードスニペットでは、文字列"2022-06-11 09:22:40"
を変数 $strDate
に割り当てます。この文字列は、標準的な形式の日付と時間を表しています。
その後、[DateTime]$strDate
を使用して、DateTime
オブジェクトへの型変換を行います。
出力:
DateTime
オブジェクトがあれば、任意の DateTime
操作を行うことができます。このチュートリアルが、文字列を PowerShell の DateTime
形式に変換する方法を理解する手助けになることを願っています。
結論
このチュートリアルを通じて、PowerShell が DateTime
変換を扱う多様な機能を探求し、ParseExact
メソッドとその文字列を DateTime
オブジェクトに解析する際の多用途性に焦点を当てました。私たちは、シンプルな日付形式を扱う方法、特定の文化的文脈を取り入れる方法、日付と時間の両方のコンポーネントを含む文字列を解析する方法を示しました。
さらに、明示的な型変換というシンプルで効果的な技術についても掘り下げ、標準の日付形式のための迅速な方法を提供しました。私たちの例は、異なる解析方法を理解し、正確で効率的な日時操作を Ensuring in PowerShell スクリプトで行うことの重要性を示しています。