【问题标题】:Edit csv column编辑 csv 列
【发布时间】:2022-01-21 18:34:22
【问题描述】:

我有一个 3 列的 csv。

Date    Time    Event
12/19/2021  3:00pm  Low
12/19/2021  1:30pm  Low
12/20/2021  3:00pm  Low

我试图从每行中减去 5 个小时。 如何将每个对象保持为datetime 格式?

$time0 = Import-Csv $Tempdest | Select 'Time'

$timeEst = $time0 | ForEach-Object {
Write-Host $_.
            ([datetime]$_).AddHours(-5)
}

【问题讨论】:

  • 请以纯文本而不是屏幕截图的形式分享 Csv
  • 更新问题

标签: powershell csv


【解决方案1】:

通过查看提供的屏幕截图,这应该可以工作,它将更新内存中导入的 CSV。如果它不起作用,最好将 CSV 作为纯文本与我们分享。

$csv = Import-Csv path/to/csv.csv

$csv | ForEach-Object {
    $date = '{0} {1}' -f $_.Date, $_.Time -as [datetime]
    $date = $date.AddHours(-5)
    $_.Date = $date.ToShortDateString()
    $_.Time = $date.ToShortTimeString()
}

$csv | Format-Table

【讨论】:

  • 这太神奇了!谢谢圣地亚哥。 $date = '{0} {1}' 是什么意思?
  • @MattyS 乐于提供帮助 :)。这被称为string formattingString.Format
  • 还有可能操纵时间吗?例如.. 如果我要创建另一列并让每行值提前 15 分钟(addminutes -15)?
  • @MattyS 是的,您只需要对列进行更多操作即可取回datetime 对象。它看起来像'{0} {1}:{2}' -f $_.Date, $_.Hour, $_.Minutes
  • 我可以开始另一个问题。 @圣地亚哥
猜你喜欢
  • 2018-04-22
  • 2016-10-31
  • 2020-02-15
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2012-08-21
相关资源
最近更新 更多