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

Powershell - amend date format to values in CSV column

我正在为以下项目寻找 PowerShell 脚本...

我有一个从网站自动下载的 CSV 传播 sheet,传播的第二列 sheet 是英国格式的日期值 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

一种方法可能是(将所有英国格式的日期替换为美国格式,无论列如何):

(get-content c:\file.csv) -replace "(\d{2})\/(\d{2})\/(\d{4})", '//'  

如果要将结果管道保存到 set-content :

(get-content c:\file.csv) -replace "(\d{2})\/(\d{2})\/(\d{4})", '//'  |sc c:\file.csv 

我喜欢用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")