如何用PowerShell统计CSV文件中每日条目数量
PowerShell 统计CSV文件每日条目数量
问题核心
CSV中的「Start Active Time」字段格式为"3/3/2023, 2:33:00 AM",默认DateTime解析逻辑无法准确识别该格式,导致读取异常,需手动指定格式字符串解析时间戳后再分组统计。
解决方案代码
# 替换为你的CSV文件实际路径 $csvFilePath = "C:\your\file\path\data.csv" # 读取CSV、解析时间戳、按日期分组统计 Import-Csv -Path $csvFilePath | ForEach-Object { # 强制按指定格式解析时间戳,适配CSV中的格式 $parsedTime = [DateTime]::ParseExact( $_.["Start Active Time"], "MM/dd/yyyy, h:mm:ss tt", [System.Globalization.CultureInfo]::InvariantCulture ) # 添加仅含日期的属性用于分组 $_ | Add-Member -MemberType NoteProperty -Name "ActivityDate" -Value $parsedTime.Date -PassThru } | Group-Object -Property ActivityDate | ForEach-Object { # 构造输出对象 [PSCustomObject]@{ 日期 = $_.Name 条目数 = $_.Count } } | Format-Table -AutoSize
关键说明
- 时间戳解析:使用
[DateTime]::ParseExact强制匹配CSV中的时间格式,"MM/dd/yyyy, h:mm:ss tt"对应月/日/年、12小时制的格式;如果你的日期是日/月/年顺序,将格式字符串改为"dd/MM/yyyy, h:mm:ss tt"。 - 字段访问:CSV字段名含空格,需用
$_.["Start Active Time"]的方式准确访问,避免驼峰转换的不确定性。 - 分组统计:通过添加
ActivityDate属性提取纯日期部分,再用Group-Object分组后统计条目数,最后格式化输出。
内容的提问来源于stack exchange,提问作者Trash Panda
相关产品推荐
相关产品推荐

