有没有一种方法可以在文本文件中的字符串日期中添加2天?

时间:2019-11-26 22:47:25

标签: powershell

我有一个文件,其中每个记录的第二个日期字段都需要设置为文本文件中第一个日期字段之后的2天。例如,一条记录包含以下字符串:

11/24/2019 -----

,我想用11/26/2019代替'-----'破折号,使其显示为

11/24/2019 11/26/2019

有人使用PowerShell脚本完成此操作吗?

1 个答案:

答案 0 :(得分:0)

# Create sample input file
@'
11/24/2019 -----
01/01/2019 -----
'@ > sample.txt

# Process each line of the file
Get-Content sample.txt | ForEach-Object {
  '{0} {1}' -f ($dt = (-split $_)[0]), 
               ([datetime] $dt).AddDays(2).ToString('MM/dd/yyyy')
}

以上结果(2行):

11/24/2019 11/26/2019
01/01/2019 01/03/2019

说明:

  • $dt = (-split $_)[0]使用-split operator的一元形式通过空格将手边的输入行($_)分开,提取第一个([0])标记,并将其分配给变量$dt

  • ([datetime] $dt).AddDays(2)将日期字符串强制转换为.NET System.DateTime实例,并调用其.AddDays()方法以添加2天。

    • .ToString('MM/dd/yyyy')用与输入日期字符串相同的方式格式化结果日期。
  • '{0} {1}' -f ...使用format operator从两个操作数组成一个输出字符串。