Powershell - 将日期格式修改为CSV列中的值

时间:2015-02-19 12:40:06

标签: mysql date powershell csv format

我正在为以下内容寻找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

2 个答案:

答案 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")