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

PowerShell脚本修改CSV中TimeRaised列:日期时间增加1小时

解决CSV中TimeRaised列时间加1小时的问题

你之前的命令问题在于,直接用Get-Date获取当前时间覆盖了原列的值,完全没有用到TimeRaised本身的时间数据,自然没法实现加1小时的需求。我们需要先解析原时间,再调整,最后输出,具体步骤如下:

正确的PowerShell脚本

$CSVLoc = "你的CSV文件路径" # 替换成实际路径
Import-Csv "$CSVLoc\Alert.csv" | ForEach-Object {
    # 解析原时间字符串为DateTime对象,格式匹配你的示例:dd-MM-yyyy HH:mm
    if ([DateTime]::TryParseExact($_.TimeRaised, 'dd-MM-yyyy HH:mm', $null, [System.Globalization.DateTimeStyles]::None, [ref]$parsedTime)) {
        # 给解析后的时间加1小时,再转成原格式的字符串
        $_.TimeRaised = $parsedTime.AddHours(1).ToString('dd-MM-yyyy HH:mm')
    } else {
        # 解析失败时保留原值并输出警告
        Write-Warning "无法解析时间:$($_.TimeRaised)"
    }
    $_ # 返回修改后的行对象
} | Export-Csv "$CSVLoc\alert1.csv" -NoTypeInformation -Encoding UTF8

关键步骤解释

  • 精准解析原时间:用[DateTime]::TryParseExact指定格式解析,避免因系统区域设置差异导致解析错误。格式字符串'dd-MM-yyyy HH:mm'要和你CSV里的时间格式完全匹配(你的示例中年份少打了一位,实际使用时要改成正确的完整年份格式)。
  • 时间偏移处理:通过AddHours(1)方法给DateTime对象添加一小时,这是PowerShell处理时间增量的标准方式。
  • 格式统一:修改后的时间转成和原格式一致的字符串,保证导出的CSV格式和原文件对齐。
  • 错误防护:加入解析判断,避免无效时间格式导致脚本崩溃,同时用警告提示异常数据。

注意事项

  • 如果你的时间是12小时制(带AM/PM标识),需要把格式字符串改成'dd-MM-yyyy h:mm tt'。
  • 导出时添加-Encoding UTF8可以避免非英文系统下的乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:07:51