我想以字符串的形式获取当前日期,格式如下:\/Date(1411762618805)\/
我一直在与PowerShell斗争,并尝试了以下方法,但它总是用不需要的属性 Package 对象。我只需要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)\/"
}
但是它仍然被 Package 在一个Date子属性中,最终我想要的只是一个微软丑陋的JSON格式的string。
如果可能的话,我只想使用内置的.NET JSON序列化器。
4条答案
按热度按时间oalqel3c1#
这里有两个问题属性,DateTime和DisplayHint,需要不同的解决方案。DateTime属性是扩展类型系统附加的ScriptProperty,因此它自动存在于所有DateTime对象上。您可以通过
Remove-TypeData
从当前会话中的所有DateTime对象中删除它DisplayHint属性是由Get-Date cmdlet添加的NoteProperty。我不知道有什么方法可以从序列化中取消此属性。您可以从DateTime:
它将输出
这是当前日期和时间,如果您只需要日期,可以执行此操作
这里我们不必删除DisplayHint,因为它不是由Get-Date附加的。
甚至不要让我开始在箍你将不得不跳过转换回适当的日期时间对象。
nwlls2ji2#
所以,JSON日期的奇妙之处在于...没什么。它们是邪恶的,应该受到惩罚。
那么,什么是JSON日期呢?它是从Unix Epoc(1970年1月1日)以来的毫秒数,也就是UTC时间。所以,这很好,但是我们如何在不使用ConvertTo-JSON cmdlet的情况下获得它呢?我所知道的最简单的方法是:
这将得到JSON格式的当前日期和时间。如果你想要一个特定的日期或日期/时间,你可以这样做,但你必须调整时区,这是我们可以做到的,它只会变长:
这将是最后一个Super Bowl的启动时间。
fzwojiic3#
我知道这是旧的,但谷歌引导我到这里。我使用Invoke-RestMethod发送/接收JSON数据,包括/Date(1411704000000)/格式的时间戳。我设法使用以下代码从PowerShell转换为JSON:
示例:
退货:
k7fdbhmy4#
请尝试使用[System.Datetime]::Now而不是Get-Date cmdlet