2016-05-11 6 views
0

ConvertFrom-Json datetime文字列をdatetimeオブジェクトに変換できません。 下の例では、タイプはStringですが、私はDateTimeと予想されます。ConvertFrom-Jsonが日付時刻を変換しない

$data = '[{"start":"04/15/2016 15:47:41"},{"start":"04/15/2016 16:47:41"}]' | 
     ConvertFrom-Json 
$data[0].start.GetType().Name 

アレイを通過して型を明示的にキャストする以外の方法がありますか?

答えて

0

ConvertFrom-Jsonは失敗しません。 startの値は文字列として定義されます(JSONには「日付」データ型がありません)。そのため、コマンドレットは正しく扱います。

データ型が必要な場合は、そのプロパティをDateTime値に変換します。

$data = '[{"start":"04/15/2016 15:47:41"},{"start":"04/15/2016 16:47:41"}]' | 
     ConvertFrom-Json | 
     Select-Object *,@{n='start';e={[DateTime]$_.start}} -Exclude start 

をそれはあなたの日付文字列は、PowerShellが認識形式である場合にのみ動作します:あなたのcas鋳造で十分です。フォーマットが認識されない場合は、parseに文字列を持っています:鋳造用

$fmt  = '...' # format string 
$culture = [Globalization.CultureInfo]::InvariantCulture 

[DateTime]::ParseExact($_.start, $fmt, $culture) 
+1

認識フォーマットはどちらか、基本的に米国形式(YYYY/MM/DD)とISO-8601(YYYY-MM-DD)です時間の有無にかかわらず。 – Joey

関連する問題