在子字符串中添加小时到日期时间

时间:2018-06-15 20:19:05

标签: powershell

我得到一个带有时间戳值列表的文件,如下所示:

06/14/2018 1:00 1374
06/14/2018 2:00 1316
06/14/2018 3:00 1288

但是我需要通过向每行添加四个小时来更正时间戳。我一直在尝试这样的事情:

...
$c = Get-Content $file |
     ForEach-Object { $_.[DateTime]$_.Substring(0, 15).AddHours(4) }
Set-Content $file -Value $c

但是我收到一个错误,即字符串不包含方法AddHours

3 个答案:

答案 0 :(得分:3)

您的主要问题是operator precedence之一:

 [datetime] $_.substring(0,15).addHours(4)

在应用$_.substring(0,15).addHours(4)强制转换之前评估[datetime] ,因此在字符串实例上调用.addHours()而不是[datetime] 1}}实例,导致你引用的错误。

使用(...)建立所需的优先级:

 ([datetime] $_.substring(0,15)).addHours(4)

日期算术运作后,您需要另外两个部分:

  • 以与输入日期相同的方式格式化重新计算的日期
  • 将输入行的其余部分附加到重新计算的日期
$lines = Get-Content $file | ForEach-Object{ 
  (([datetime] $_.substring(0,15)).addHours(4)).ToString('MM/dd/yyyy h:mm') +
    $_.substring(15)
} 

set-content $file -Value $lines

注意:鉴于您使用的是15个字符的固定前缀。从每一行只有一位数小时而没有AM / PM指标,目前还不清楚如何处理一天24小时。

答案 1 :(得分:0)

正如Bill所说,在尝试调用View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_answer, parent, false); view.setOnClickListener(this); view.setOnLongClickListener(this); MyCustomHolderClass myCustomHolder = new MyCustomHolderClass(view); return myCustomView; 方法之前,您需要转换为DateTime

AddHours

假设您不关心每一行的剩余四位数。

答案 2 :(得分:0)

顺便说一句,这就是我最后得到的。午夜读数有误,但最终结果正确。

$c = Get-Content $file | ForEach-Object{(([datetime] $_.substring(0,15)).addHours(4)).ToString('MM/dd/yyyy HH:mm') + $_.substring(15)} 
$c = $c -replace":000",":00"
set-content $file -Value $c'