Dot-Net

將 PowerShell 中的日期時間格式化為 JSON 為 /Date(1411704000000)/

  • May 6, 2021

我想以以下格式將目前日期作為字元串獲取:

\/Date(1411762618805)\/

我一直在使用 PowerShell 並嘗試了以下方法,但它一直在用不需要的屬性包裝對象。我只需要value

Get-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-TypeData

Get-TypeData System.DateTime | Remove-TypeData

DisplayHint 屬性是由 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 附加的。

甚至不要讓我開始你必須跳過才能轉換回正確的日期時間對象的箍。

引用自:https://stackoverflow.com/questions/26067906