我在文本文件中的日期格式如下: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中有一种简单的方法吗?
答案 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中,然后重新格式化您想要的方式。