datetime vs System.datetime和Powershell中的转换为Json

datetime vs System.datetime和Powershell中的转换为Json,powershell,Powershell,我试图捕获一些文件信息并将其存储为JSON。我遇到的问题是,我最终得到了两种不同的日期序列化为JSON 这个脚本 cd ~ $Index = 'fileInfo.json' $Members = 'members.txt' $data = Get-ChildItem | Select-Object -First 1 | Select-Object -Property CreationTime , @{Name="AsOf";Expression={(Get-Date)

我试图捕获一些文件信息并将其存储为JSON。我遇到的问题是,我最终得到了两种不同的日期序列化为JSON

这个脚本

cd ~
$Index = 'fileInfo.json'
$Members = 'members.txt'

$data = Get-ChildItem | Select-Object -First 1 |
    Select-Object -Property CreationTime ,
        @{Name="AsOf";Expression={(Get-Date) -as [datetime]}} 

$data | Get-Member | Out-File $Members
$data | ConvertTo-Json | Out-File $Index

#$reloaded = cat $Index | ConvertFrom-Json
。。。生成此JSON

{
    "CreationTime":  "\/Date(1423230920315)\/",
    "AsOf":  {
                 "value":  "\/Date(1504713920338)\/",
                 "DisplayHint":  2
             }
}
CreationTime和AsOf这两个日期显示为不同的类型:

Name         MemberType   Definition                               
----         ----------   ----------                               
AsOf         NoteProperty System.DateTime AsOf=9/6/2017 12:21:30 PM
CreationTime NoteProperty datetime CreationTime=2/6/2015 8:55:20 AM
CreationDate(类型“datetime”)以更可移植的格式序列化


有没有办法将System.dateTime转换为“dateTime”??“-as datetime”似乎没有帮助。谢谢你,克里斯,你的问题把我逼疯了。但经过一些研究,我得到的是。你从“创建时间”中获得的时间实际上是NTFS()的时间戳,并且是以C++为核心完成的。然后,当您通过powershell获得时间时,它会在您转换为[datetime]时使用.Net framework。这是主要的区别,即使它说的是datetime,它也不是“System.datetime”,因为来源不同

我的解决方案是,如果你真的想它是C++的C++而不是C语言的日期时间。p>
AsOf
包装到
PSObject
中。这可能是因为您对
选择对象
cmdlet使用了
脚本块
表达式
。感谢您深入了解这一点。这个解释很有帮助。
New-Item -ItemType Directory -Path .\test123
$Today = Get-Item -Path .\test123 | Select-Object -Property CreationTime
$Creation = Get-ChildItem | Select-Object -First 1 | Select-Object -Property CreationTime
$data = New-Object PSObject
Add-Member -type NoteProperty -Name CreationTime -InputObject $data -Value $Creation.CreationTime
Add-Member -type NoteProperty -Name AsOf -InputObject $data -Value $Today.CreationTime
Remove-Item .\test123