Dot-Net
將 PowerShell 中的日期時間格式化為 JSON 為 /Date(1411704000000)/
我想以以下格式將目前日期作為字元串獲取:
\/Date(1411762618805)\/我一直在使用 PowerShell 並嘗試了以下方法,但它一直在用不需要的屬性包裝對象。我只需要
valueGet-Date | ConvertTo-Json # returns { "value": "\/Date(1411762618805)\/", "DisplayHint": 2, "DateTime": "Friday, September 26, 2014 4:16:58 PM" }當然,如果您嘗試將其轉換回一個對象,
ConvertFrom-Json那麼您將返回一個 .NET Date 對象。我已經接近了
Get-Date | Select-Object -Property Date | ConvertTo-Json { "Date": "\/Date(1411704000000)\/" }但它仍然包含在 Date 子屬性中。歸根結底,我想要的只是一個帶有微軟醜陋 JSON 格式的字元串。
如果可能,我只想使用內置的 .NET JSON 序列化程序。
這裡有兩個問題屬性,DateTime 和 DisplayHint,它們都需要不同的解決方案。DateTime 屬性是擴展類型系統附加的 ScriptProperty,因此它自動存在於所有 DateTime 對像上。您可以通過以下方式從目前會話中的所有 DateTime 對像中刪除它
Remove-TypeDataGet-TypeData System.DateTime | Remove-TypeDataDisplayHint 屬性是由 Get-Date cmdlet 添加的 NoteProperty。我知道沒有辦法從序列化中抑制這一點。您可以從 DateTime 中顯式刪除它:
Get-Date | foreach { $_.PSObject.Properties.Remove("DisplayHint"); $_ } | ConvertTo-Json這將輸出
"\/Date(1411846057456)\/"這是目前日期和時間,如果您只想要日期,您可以這樣做
Get-Date | select -ExpandProperty Date | ConvertTo-Json在這裡,我們不必刪除 DisplayHint,因為它不是由 Get-Date 附加的。
甚至不要讓我開始你必須跳過才能轉換回正確的日期時間對象的箍。