Datetime 在PowerShell v2中将日期时间字符串转换为其他日期时间字符串

Datetime 在PowerShell v2中将日期时间字符串转换为其他日期时间字符串,datetime,powershell-2.0,Datetime,Powershell 2.0,我有以下字符串,它是从日志文件中的条目中提取的 $d = "19/09/2014 22:41:27" 但是,我需要将其转换为 2014-09-19 22:41:27 这样我就可以将它与日志文件的其他部分一起导出到MySQL数据库中 但我一辈子都找不到这样做的方法。我希望找到像set dateFormat这样的东西,它可以简单地重新映射字符串的组件,但它似乎不存在 我尝试了以下各种变化: $a = "19/09/2014 22:41:27" $d = [datetime]::ParseExac

我有以下字符串,它是从日志文件中的条目中提取的

$d = "19/09/2014 22:41:27"
但是,我需要将其转换为

2014-09-19 22:41:27
这样我就可以将它与日志文件的其他部分一起导出到MySQL数据库中

但我一辈子都找不到这样做的方法。我希望找到像set dateFormat这样的东西,它可以简单地重新映射字符串的组件,但它似乎不存在

我尝试了以下各种变化:

$a = "19/09/2014 22:41:27"
$d = [datetime]::ParseExact($a, "dd/MM/yyyy hh:mm:ss", $null)
$e = "{0:yyyymmddhhmmss}" -f [datetime]$d
但一切都会返回错误:

字符串未被识别为有效的日期时间


获取我所需格式的最佳方法是什么?

在其他一些博客的帮助下,快速播放以下内容,非常类似于您自己的内容。可能有一种方法可以使它更加精简,但它将创建您需要的datetime对象。在这之后操作输出应该很简单

$theDTString = "19/09/2014 22:41:27".toString()
$theDateTimeObject = ([datetime]::ParseExact($theDTString,"dd/MM/yyyy HH:mm:ss",$null))

$theDateTimeObject.year.toString() + "-" + $theDateTimeObject.month.toString() +"-"+ 
$theDateTimeObject.day.toString() + " " + $theDateTimeObject.Hour.toString() + ":" +$theDateTimeObject.Minute.toString() + ":" + $theDateTimeObject.Second.toString()

与原始输入相同的答案如下:

$a = "19/09/2014 22:41:27"
$d = [datetime]::ParseExact($a, "dd/MM/yyyy HH:mm:ss", $null)
$e = "{0:yyyymmddhhmmss}" -f [datetime]$d
尝试将22小时转换为12小时格式时出错。

干杯,这(几乎)是完美的。唯一的问题是它错过了本月领先的0,因此它只有9而不是09。我首先创建了每个部分(日、月等),然后检查长度(-lt 2),并在构建最终日期之前添加0。关于“字符串未被识别为有效日期时间”的错误是由于您使用了精确的日期格式。字符串$a中列出了24小时时间,但您试图使用小写字母“hh:”将其读取为12小时时间。如果你用“HH:”来代替,它可以转换为罚款。