【问题标题】:Add column to CSV with formatting使用格式化将列添加到 CSV
【发布时间】:2022-01-22 03:08:37
【问题描述】:

我有一个 3 列的小 csv。

Date        Time    Event
12/19/2021  9:00am  Low
12/19/2021  7:30am  Medium
12/20/2021  9:00am  Low

我想添加带有警告标题的第 4 列。在第 4 列中,我想从列中减去 15 分钟

Date        Time    Event   Warning
12/19/2021  9:00am  Low     8:45am
12/19/2021  7:30am  Medium  7:15am
12/20/2021  9:00am  Low     8:45am

我在格式化时遇到困难?

感谢您今天的宝贵时间。

【问题讨论】:

  • 如果 Time12:14AM(用于您的测试([datetime]'12:14:00AM').AddMinutes(-15))会发生什么?看,有一个不与 Date 关联的列是个问题。
  • 是的,这就是我感到困惑的地方。
  • 是的,我们不能替你决定,你需要告诉我们当我上面提到的条件满足时会发生什么。
  • 是否可以将字符串转换为日期时间?因此,如果满足上述条件,结果将是晚上 11:59:00。

标签: powershell csv


【解决方案1】:

您可以使用calculated property on Select-Object 来计算时间差,但这会使日期 列保持不变。

# Use $Csv = Import-Csv path/to/csv.csv here instead
$csv = @'
Date        Time    Event
12/19/2021  9:00am  Low
12/19/2021  7:30am  Medium
12/20/2021  9:00am  Low
'@ -replace ' +',',' | ConvertFrom-Csv

$csv | Select-Object *, @{
    Name = 'Warning'
    Expression = {
        ([datetime]$_.Time).AddMinutes(-15).ToShortTimeString()
    }
}

结果:

Date       Time   Event  Warning
----       ----   -----  -------
12/19/2021 9:00am Low    8:45 AM
12/19/2021 7:30am Medium 7:15 AM
12/20/2021 9:00am Low    8:45 AM

【讨论】:

  • 日期栏完好无损。我不预见任何时候日期会改变。感谢您在圣地亚哥度过的时光。这很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
相关资源
最近更新 更多