Format datetime in der PowerShell zu JSON als \/Date(1411704000000)\/
Ich möchte das aktuelle Datum als string im folgenden format:
\/Date(1411762618805)\/
Ich Kämpfe mit PowerShell und habe Folgendes versucht, aber es hält wickeln Sie das Objekt mit unerwünschten Eigenschaften. Muss ich nur die value
Get-Date | ConvertTo-Json
# returns
{
"value": "\/Date(1411762618805)\/",
"DisplayHint": 2,
"DateTime": "Friday, September 26, 2014 4:16:58 PM"
}
Natürlich, wenn Sie versuchen, Sie zu konvertieren zurück zu einem Objekt mit ConvertFrom-Json
Sie sind zurück mit einem .NET Date-Objekts.
Ich habe näher mit
Get-Date | Select-Object -Property Date | ConvertTo-Json
{
"Date": "\/Date(1411704000000)\/"
}
Aber es ist immer noch verpackt in einem Datums-Kind-Eigenschaft. Am Ende des Tages alles was ich will ist ein string mit Microsoft ist hässlich JSON-format.
Ich nur wollen, verwenden Sie die eingebaute in .NET JSON-serialisierungsprogramme, wenn möglich.
- Ich weiß nichts über JSON, die ist, warum dies ist nur ein Kommentar, sondern ich die Verwendung von string-manipulation, um die Ausgabe, die Sie waren auf der Suche nach
(Get-Date | Select-Object -Property Date | ConvertTo-Json).Split('"') | Where-Object{$_ -match "\\"}
. Es ist schmutzig, aber split in ein array an angeboten und passen das array-Element mit einem backslash (2, da muss es escaped werden in regex.)\/Date(1411704000000)\/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei problem-Eigenschaften hier, DateTime und DisplayHint und beide erfordern eine andere Lösung. Die DateTime-Eigenschaft ist eine ScriptProperty angebracht, die von extended type system, so es vorhanden ist, auf alle DateTime-Objekte automatisch. Sie können entfernen Sie es aus allen DateTime-Objekte in der aktuellen Sitzung über
Remove-TypeData
Den DisplayHint-Eigenschaft ist eine NoteProperty, die Hinzugefügt werden, indem Sie das cmdlet Get-Date. Ich kenne keine Art und Weise zu unterdrücken, die aus der Serialisierung. Sie können entfernen Sie Sie ausdrücklich aus dem DateTime:
die Ausgabe
Dies ist das aktuelle Datum und die Zeit, wenn Sie wollen nur das Datum, an dem Sie dies tun können
Hier haben wir nicht zum entfernen der DisplayHint denn es war nicht angebracht von Get-Date.
Nicht sogar get me started auf den Reifen müssen Sie springen durch, um wieder zurück konvertieren, um die richtige Datums-Zeit-Objekt.
So, das schöne an JSON-Daten ist... nichts. Sie sind böse, und Sie verdienen es, bestraft zu werden.
Also, was ist ein JSON-Datum? Es ist die Anzahl der Millisekunden seit der Unix-Epoc (Jan 1, 1970), gut, UTC-Zeit, die ist. So, das ist toll und alles, aber wie bekommen wir das ohne mit der ConvertTo-JSON-cmdlet? Einfachste Möglichkeit, die ich kenne ist diese:
Bekommen Sie das aktuelle Datum und die Zeit formatiert JSON. Wenn Sie möchten, ein bestimmtes Datum oder ein Datum/Zeit-Sie könnten es tun, aber Sie haben, um die Anpassung an die Zeitzone, was können wir tun, es wird nur lange:
Das wäre der kick-off-Zeit für die letzten Super Bowl.
$utc = (get-date '1/1/1970') + [timespan]::frommilliseconds($jdate); $utc = [datetime]::SpecifyKind($utc,'utc'); $utc.ToLocalTime()
Beachten Sie, dass convertfrom-json zurückgibt utc-Zeiten.new Date()
von js.Ich weiß, das ist alt, aber Google hat mich hierher geführt. Ich bin mit Invoke-RestMethod zum senden/empfangen von JSON-Daten, einschließlich der Zeitstempel in die /Datum(1411704000000)/format. Ich schaffte es, aus der PowerShell zu JSON mit dem folgenden:
Beispiel:
Gibt: