使用PowerShell解析JSON日期并筛选当月数据导出为CSV
PowerShell解析JSON日期并过滤当月数据解决方案
实现思路
- 首先获取当月第一天的零点时间作为过滤基准,可自动规避同一年其他月份、其他年份同月份数据的误判问题
- PowerShell支持直接将
Dateobtained字段的ISO 8601格式时间字符串转换为DateTime对象,无需额外编写格式解析逻辑 - 在遍历JSON节点时增加日期判断条件,仅保留符合当月要求的记录输出到CSV
完整修改后代码
# 读取JSON源文件 $json = Get-Content "source.json" | ConvertFrom-Json # 定义当月第一天零点作为过滤基准 $currentMonthStart = Get-Date -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0 $json | ForEach-Object { # 遍历每个测试项的Findings节点 $_.Findings | ForEach-Object { # 转换日期字段并判断是否属于当月 $obtainedDate = [DateTime]$_.Dateobtained if ($obtainedDate -ge $currentMonthStart) { [PSCustomObject]@{ 'Type' = $_.Type 'Score' = $_.Score 'Status' = $_.Status 'Description' = $_.Description # 如需保留日期字段到CSV可取消下一行注释 # 'Dateobtained' = $obtainedDate.ToString("yyyy-MM-dd HH:mm:ss") } } } } | Export-Csv -Path "out.csv" -NoTypeInformation -Encoding UTF8
补充说明
- 如果JSON中的
Dateobtained为UTC时间,可将基准时间调整为UTC格式保证比对准确:$currentMonthStart = (Get-Date -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0).ToUniversalTime() - 代码末尾增加了
-Encoding UTF8参数,避免导出CSV时出现中文乱码,如无相关需求可直接删除。
内容的提问来源于stack exchange,提问作者prokopio_kuba
相关产品推荐
相关产品推荐

