PowerShell RegEx日期转换(dd MMM yy)为(yyyymmdd)

时间:2013-09-30 00:09:55

标签: sql regex date powershell

我在文本文件中的日期格式如下:06/18/2012(dd / mm / yyyy)我要转换为:2012-18-06(yyyyddmm)使用Powershell。

(Get-Content C:\script\test.txt) | 
Foreach-Object {$_ -replace "([0-9]+)/+([0-9]+)/+([0-9]+)", '$3$2$1'} | 
Set-Content C:\script\test.txt

以上似乎工作正常。虽然我正在努力改变以下

12 Jan 2013 Test.docx    
01 February 2001 File.pptx    
Meeting 04 Feb 2012.xls    
09 September 2011.txt    
30 Jan 13.doc

进入(yyyyddmm)

在SQL Server或Powershell中有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

$lines = @'
12 Jan 2013 Test.docx    
01 February 2001 File.pptx    
Meeting 04 Feb 2012.xls    
09 September 2011.txt    
30 Jan 13.doc
'@ -split "`n"

$lines | % {[regex]::Replace($_, '(.*?)(\d+\s+\w+\s+[0-9]+)(.*?)', {param($match) $d = [DateTime]::Parse($match.groups[2].value).ToString("yyyyddMM"); "$($match.groups[1].value)$d$($match.groups[3].value)"})}

这使用[regex] :: Replace重载,您可以指定回调来处理匹配的文本。有了它,您可以将日期部分运行到DateTime.Parse中,然后重新格式化您想要的方式。

相关问题