过滤CSV,其中系统日期格式和文件日期格式不同

时间:2014-02-21 10:36:43

标签: date powershell csv

我有一个包含3个示例行的大型源CSV文件,如下所示

0000000000254000,19/02/2014,"zzzzzzz","close","BIL","5378874","125.00",
0000000000254000,19/12/2013,"zzzzzzz","close","BIL","5378874","125.00",
0000000000254000,19/08/2013,"zzzzzzz","close","BIL","5378874","125.00",

我想删除所有< 10天,即今天() - 上面的日期列< 10,并根据本网站上其他人的善意捐赠以下脚本结束:

get-content C:\temp\date2.csv | where {
  [date] ($_.split(','))[1] -lt (get-date).date.adddays(-10)
} | set-content "C:\temp\newdate.txt"

如果我将文件中的日期与powershell系统日期格式对齐,但是有人可以帮助我在上述简单脚本中如何做到这一点吗?

我一开始就试过这个,但却悲惨地失败了:

(Get-Culture).DateTimeFormat.ShortDatePattern="dd/MM/yyyy"

1 个答案:

答案 0 :(得分:2)

试试这个:

Import-Csv C:\temp\date2.csv -Header c1,c2,c3,c4,c5,c6,c7 | 
where { [datetime]::ParseExact($_.c2, "dd/MM/yyyy", $null) -lt (get-date).date.adddays(-10)} | 
Export-Csv -NoTypeInformation "C:\temp\newdate.txt"

-Header 为列提供名称,只要您在第2行修改$_.c2,就可以将其更改为您想要的任何内容。