我正在为以下内容寻找PowerShell脚本......
我有一张自动从网站下载的CSV电子表格,电子表格的第二列是英国格式的日期值dd / mm / yyyy。我想要一个脚本,它会将第2列中所有值的日期格式更改为美国日期格式yyyy / mm / dd。
我使用LOAD DATA INFILE将CSV导入MySQL数据库,目前日期是2017/02/15,应该是2015/02/17。
CSV文件格式的示例如下......
Col1,Col2,Col3,Col4
Value1,17/02/15,Value3,Value4
Value1,18/02/15,Value3,Value4
Value1,19/02/15,Value3,Value4
我需要它成为......
Col1,Col2,Col3,Col4
Value1,2015-02-17,Value3,Value4
Value1,2015-02-18,Value3,Value4
Value1,2015-02-19,Value3,Value4
答案 0 :(得分:1)
可以采用一种方式(将英国格式的所有日期替换为美国格式,无论列如何):
(get-content c:\file.csv) -replace "(\d{2})\/(\d{2})\/(\d{4})", '$3/$2/$1'
如果要将结果管道保存到set-content:
(get-content c:\file.csv) -replace "(\d{2})\/(\d{2})\/(\d{4})", '$3/$2/$1' |sc c:\file.csv
答案 1 :(得分:1)
我喜欢使用TryParseExact。您可以转换多种格式,但您可以找到无效值。
示例:
$dateString = "17/02/2015"
$format = "dd/MM/yyyy"
[ref]$parsedDate = get-date
$parsed = [DateTime]::TryParseExact($dateString, $format,[System.Globalization.CultureInfo]::InvariantCulture,[System.Globalization.DateTimeStyles]::None,$parseddate)
$parsedDate.Value.ToString("yyyy/MM/dd")