2017-10-18 2 views
0

Daten zurückgegeben vom rest-API als JSON, wo die Daten/Zeit alsPower json Dateformat

formated wird
{ 
    "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" 
} 

Datum/Zeit nicht richtig formatiert, werden die Daten von Intune Datawarehouse API

die Daten via Powershell angefordert wird, meine Frage ist es ein Powershell-Shell Bug oder diese wie JSON Händels Datenformate

Das Datum shold als
TT/MM/JJ HH angezeigt: MM: SS

see the picture

+0

Sieht für mich wie perfekt gültige ISO-8601 aus. JSON hat keine native Methode, um Daten und Zeiten zu beschreiben. Die vorherrschende Art, dies zu handhaben, ist entweder eine Zeichenfolge, die eine serialisierte Beschreibung des Datums enthält, wie Sie sehen, oder eine Zahl, die normalerweise in Unix-Zeit ist (d. H. UTC Sekunden seit 1970-01-01). In Bezug auf Lesbarkeit, Präzision und Flexibilität ist die String-Version normalerweise ein klarer Gewinner. – Joey

+0

Wenn Sie dieses Format ändern müssen, müssen Sie dies nach dem Empfang der Daten tun. Dies ist das Format, in dem der Server sendet. – jradich1234

Antwort

1

Das Datum ist einfach eine Zeichenfolge, die das Datum als ISO-8601 enthält (da JSON keinen DateTime-Typ hat). Parse das Datum und dann formatiert als eine andere Zeichenfolge:

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

Ich habe mir das Wiki über ISO-8610 angesehen, – BeerAndHugs

0

Ich habe eine ConvertFrom-json und dann durch jeden Hinweis Property Looping, wenn es einen besseren Ansatz Kommentar Fühlen Sie sich frei :)

$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 

    } 

}