.net - 在PowerShell中将日期时间格式化为\/Date(1411704000000)\/以JSON格式

标签 .net datetime powershell

我想以以下格式将当前日期作为字符串获取:
\/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子属性中。在一天结束时,我想要的只是一个带有Microsoft丑陋JSON格式的字符串

如果可能的话,我只想使用内置的.NET JSON序列化程序。

最佳答案

这里有两个问题属性,DateTime和DisplayHint,都需要不同的解决方案。 DateTime属性是扩展类型系统附加的ScriptProperty,因此它自动存在于所有DateTime对象上。您可以通过Remove-TypeData将其从当前 session 的所有DateTime对象中删除

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附加的。

甚至不必让我开始研究篮球,您就必须跳过去才能转换回正确的日期时间对象。

关于.net - 在PowerShell中将日期时间格式化为\/Date(1411704000000)\/以JSON格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26067906/

相关文章:

用于从文件夹列表中省略遍历访问被拒绝的文件夹的 Powershell 脚本

windows - Powershell 的环境变量

c# - 检查通用列表内容的最佳方法

c# - 在缓存应用程序 block 中配置缓存管理器过期时间

c# - 如何执行以下 Linq/Lambda 代码?

c# - 如何将毫秒的日期时间转换为 C# 中的字符串?

java - 如何在java中解析基于时间的标记?(1m 1M 1d 1Y 1W 1S)

c# - 直接拆箱一个装箱的 int 到 short

python - 如何将字符串转换为日期对象并分别获取年、月和日?

powershell - 从任务列表中传递答案以检查进程的内存使用情况,并在超过阈值时终止