我有以下字符串,该字符串是从日志文件中的条目中提取的。
$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。
获得我需要的格式的最佳方法是什么?
答案 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小时格式时出错。