You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免Powershell的ConvertTo-Json将日期转换为Epoch时间

解决PowerShell ConvertTo-Json自动转换日期为Epoch格式的方案

方法一:阻止自动转换,直接生成人类可读日期格式

  • 适配所有PowerShell版本的通用方案
    提前通过计算属性将DateTime类型字段转换为指定格式的字符串,再执行JSON序列化:
Get-LocalUser | Select-Object Name, Enabled, `
@{Name='PasswordLastSet';Expression={$_.PasswordLastSet.ToString('yyyy-MM-dd HH:mm:ss')}}, `
@{Name='LastLogon';Expression={$_.LastLogon.ToString('yyyy-MM-dd HH:mm:ss')}} | ConvertTo-Json

可根据需求自行调整ToString参数中的日期格式规则。

  • PowerShell 7+专属简化方案
    PowerShell 7及以上版本的ConvertTo-Json新增了-DateTimeFormat参数,直接指定日期格式即可:
Get-LocalUser | ConvertTo-Json -DateTimeFormat 'yyyy-MM-dd HH:mm:ss'

注意:该参数仅支持PowerShell 7及更高版本,Windows PowerShell 5.1无法使用


方法二:将已生成的Epoch日期格式转回可读格式

对于已经生成的包含\/Date(1597311158786)\/格式的JSON内容,可通过正则提取时间戳转换:

  • 单个日期转换示例:
# 提取Epoch毫秒时间戳
$epochMs = [long][regex]::Match($yourJsonString, '\\/Date\((\d+)\)\\/').Groups[1].Value
# 转换为本地时区可读日期
$readableDate = [DateTimeOffset]::FromUnixTimeMilliseconds($epochMs).LocalDateTime.ToString('yyyy-MM-dd HH:mm:ss')
  • 批量替换JSON中所有日期格式示例:
$convertedJson = [regex]::Replace($yourRawJson, '\\/Date\((\d+)\)\\/', {
    param($match)
    $epochMs = [long]$match.Groups[1].Value
    return [DateTimeOffset]::FromUnixTimeMilliseconds($epochMs).LocalDateTime.ToString('yyyy-MM-dd HH:mm:ss')
})

如果你的时间戳为秒级而非毫秒级,将FromUnixTimeMilliseconds替换为FromUnixTimeSeconds即可。


内容的提问来源于stack exchange,提问作者QuantAC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:24:04