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

时间:2014-09-23 14:12:58

标签: datetime powershell-v2.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]::ParseExact($a, "dd/MM/yyyy hh:mm:ss", $null)
$e = "{0:yyyymmddhhmmss}" -f [datetime]$d

但是一切都会返回错误:

  

字符串未被识别为有效的DateTime。

获得我需要的格式的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

在一些其他博客的帮助下快速发挥作用,提供以下内容,与您自己的非常相似。可能有一种方法可以使它更加简化,但它会创建你需要的日期时间对象。之后操作输出应该很简单。

$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()

答案 1 :(得分:1)

原始输入的相同答案是:

$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小时格式时出错。