2017-10-18 27 views
0

は、データ/時刻が正しくフォーマットされていませんPowerShellのJSON形式はDateFormat

{ 
    "userKey": ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤, 
    "userId": "¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤", 
    "userEmail": "¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤", 
    "userPrincipalName": "¤¤¤¤¤¤¤¤¤¤¤¤¤¤", 
    "displayName": "¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤", 
    "intuneLicensed": true, 
    "isDeleted": true, 
    "startDateInclusiveUTC": "2017-10-16T00:00:00Z", 
    "endDateExclusiveUTC": "9999-12-31T00:00:00Z", 
    "isCurrent": true, 
    "rowLastModifiedDateTimeUTC": "2017-10-17T00:24:11.8233333Z", 
    "PictureUrl": "¤¤¤¤¤¤¤¤¤¤¤¤.dk" 
} 

日付/時刻としてフォーマットされているJSONとして残り-APIからデータを返され、データがIntuneのデータウェアハウスのAPI

データからですPowerShellを介して、要求された私の質問は、それは、PowerShellのシェルのバグであるか、これはJSONヘンデルデータ形式は

日は
MM/DD/YY HHとして表示されますSHOLD方法:MM:SS

see the picture

+0

完全に有効なISO-8601のようです。 JSONには、日付と時刻を本来の方法で記述することはありません。これを処理する一般的な方法は、表示される日付のシリアル化された説明を含む文字列か、通常はUnix時間(つまり、1970-01-01からのUTC秒)の数値です。読みやすさ、精度、柔軟性の面では、通常、文字列のバージョンは明確な勝者です。 – Joey

+0

このフォーマットを変更する必要がある場合は、データを受け取った後に変更する必要があります。これは、サーバーが送信している形式です。 – jradich1234

答えて

1

日付は、JSONにDateTime型がないため、日付をISO-8601として含む文字列です。日付を解析し、別の文字列としてフォーマット:

PS> [datetime]::parse("9999-12-31T00:00:00Z").Tostring('MM/dd/yy HH:mm:ss') 
12-31-99 01:00:00 
+0

私はISO-8610に関するwikiを見てきましたが、 – BeerAndHugs

0

私はConvertfrom-JSONを行なったし、その後、すべてのノートプロパティをループ、より良いアプローチがある場合は、コメント気軽に:)

$IntuneCollectionData | get-member -type NoteProperty | foreach-object { 
    if ($_.value -match "(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+)|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d)|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d)") 
    { 

     $NewDateTime = [datetime]::parse("$($_.value)").Tostring('MM/dd/yy HH:mm:ss') 

     $_.value = $NewDateTime 

    } 

}