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

  1. PowerShell で DateTime を解析するための ParseExact メソッドの使用
  2. PowerShell で DateTime を解析するための明示的な型変換の使用
  3. 結論
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 を使用するシンプルで効果的なデモです。

出力:

powershell datetime parseexact - 出力 1

この出力は、文字列から作成された DateTime オブジェクトを示しており、入力文字列に時間が指定されていなかったため、時刻はデフォルトで真夜中(00:00:00)に設定されています。

特定の文化を使用

ParseExact で特定の文化を使用することは、現在のシステム設定とは異なる文化の慣習に従ってフォーマットされた日付文字列を扱う際に重要です。このアプローチは、MM/dd/yyyydd/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 を使用して解析された日付を表示し、指定された文化の文脈で入力文字列が正しく解釈される様子を示します。

出力:

powershell datetime parseexact - 出力 2

この出力は、フランス文化の文脈で日付文字列の成功した解析を示しています。日付は 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 を扱います。$formatyyyy-MM-dd HH:mm に設定し、この構造に合わせます。

$provider には $null を選択し、不変の文化を使用することを示します。このアプローチは、日時形式が標準であり、文化に依存しない場合によく行われます。

重要なのは、[datetime]::ParseExact($dateTimeString, $format, $provider) を実行する時であり、文字列を DateTime オブジェクトに変換し、文字列からの日付と時間を保持します。

出力:

powershell datetime parseexact - 出力 3

この結果は、入力文字列が正確に 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 オブジェクトへの型変換を行います。

出力:

powershell datetime parseexact - 出力 4

DateTime オブジェクトがあれば、任意の DateTime 操作を行うことができます。このチュートリアルが、文字列を PowerShell の DateTime 形式に変換する方法を理解する手助けになることを願っています。

結論

このチュートリアルを通じて、PowerShell が DateTime 変換を扱う多様な機能を探求し、ParseExact メソッドとその文字列を DateTime オブジェクトに解析する際の多用途性に焦点を当てました。私たちは、シンプルな日付形式を扱う方法、特定の文化的文脈を取り入れる方法、日付と時間の両方のコンポーネントを含む文字列を解析する方法を示しました。

さらに、明示的な型変換というシンプルで効果的な技術についても掘り下げ、標準の日付形式のための迅速な方法を提供しました。私たちの例は、異なる解析方法を理解し、正確で効率的な日時操作を Ensuring in PowerShell スクリプトで行うことの重要性を示しています。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

関連記事 - PowerShell DateTime