更新日:2020/08/20
次のサンプルは基本形です。yyyyMMddで年月日を表して変換します。
指定していない時間、分、秒は 0:00:00 に変換されるようです。
サンプルコード:
[DateTime]::ParseExact("20200820","yyyyMMdd", $null)
実行結果:
2020年8月20日 0:00:00
次のサンプルではハイフン付きの日付を表す文字列を DateTime 型に変換しています。$tmp に結果を代入しています。
サンプルコード:
$tmp = [DateTime]::ParseExact("2020-08-20","yyyy-MM-dd", $null);
write-host $tmp
実行結果:
2020/08/20 0:00:00
次のサンプルではハイフン付きの日付を表す文字列及びコロン付きの時間を DateTime 型に変換しています。$tmp に結果を代入しています。
HHをhhにすると00〜12が範囲となるため、本例のように 13 を指定すると "3" 個の引数を指定して "ParseExact" を呼び出し中に例外が発生しました: "文字列は有効な DateTime ではありませんでした。" エラーとなります。注意してください。
サンプルコード:
$tmp = [DateTime]::ParseExact("2020-08-20 13:05:59","yyyy-MM-dd HH:mm:ss", $null);
write-host $tmp
実行結果:
2020/08/20 13:05:59
次の例は区切りのハイフン、スラッシュ、コロン無しで日付、時刻を表示した場合です。この書式もプログラムによってはよく使うと思います。
サンプルコード:
[DateTime]::ParseExact("20200820130558", "yyyyMMddHHmmss", $null)
実行結果:
2020年8月20日 13:05:58
次の例はエラーの例です。ParseExactでフォーマットが正しくない場合にこのエラーとなります。
次の例では文字が1個欠落していました。
【誤】
2020082013055
【正】
20200820130559
サンプルコード:
[DateTime]::ParseExact("2020082013055", "yyyyMMddHHmmss", $null)
実行結果:
"3" 個の引数を指定して "ParseExact" を呼び出し中に例外が発生しました: "文字列は有効な DateTime ではありませんでした。"
発生場所 C:\temp\code.ps1:1 文字:1
+ [DateTime]::ParseExact("2020082013055", "yyyyMMddHHmmss", $null)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FormatException
次の例では時刻のみ指定しています。時刻は正しく変換されました。日付はこのプログラムの実行日時が自動で設定されました。(プログラムの実行日時は2020年8月20日)
サンプルコード:
[DateTime]::ParseExact("130558", "HHmmss", $null)
実行結果:
2020年8月20日 13:05:58
以下の例では逆にDateTime 型を String 型に変換するサンプルプログラムです。
DateTime型をToString で文字列に変換しています。
サンプルコード:
$tmp = [DateTime]::ParseExact("2020-08-20 13:05:59","yyyy-MM-dd HH:mm:ss", $null);
write-host $tmp
$tmp.GetType()
$tmp = $tmp.ToString("yyyy-MM-dd HH:mm:ss.fff")
write-host "--------------------------------"
write-host $tmp
$tmp.GetType()
実行結果:
2020/08/20 13:05:59
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType
--------------------------------
2020-08-20 13:05:59.000
True True String System.Object
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018