2017-10-18 62 views
0

返回从静止-API作为JSON其中数据/时间格式化为的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" 
} 

日期/时间不正确格式化的数据,数据是从Intune的数据仓库API

数据通过PowerShell是请我的问题是,一个PowerShell命令行管理程序错误或该如何JSON亨德尔数据格式

的日期Shold显示为
MM/DD/YY HH:MM:SS

see the picture

+0

看起来像我完全有效的ISO-8601。 JSON没有任何本地的描述日期和时间的方式。处理这种情况的主要方式是包含对你所看到的日期的序列化描述的字符串,或者是一个通常在Unix时间(即自1970-01-01以来的UTC秒)的数字。在可读性,精确性和灵活性方面,弦乐版本通常是明显的赢家。 – Joey

+0

如果你需要改变这种格式,你会收到数据后这样做。这是服务器发送的格式。 – jradich1234

回答

1

日期只是一个字符串,其中包含日期为ISO-8601(因为JSON没有DateTime类型)。解析日期,然后格式化它作为一个不同的字符串:

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 

    } 

}