[英]convert date time to Epoch format in CSV in powershell
我想使用PowerShell将datetime转换为csv文件中的Epoch格式。 在csv文件中,我只有时间数据,并且我想使用csv中指定的当前日期和时间将其转换为Epoch格式。
in.csv
"192.168.1.2","01-any1TEST ","Ping","Down at least 3 min","17:25:14",":Windows 2012 Server"
"192.168.1.2","02-any2TEST ","Ping","Down at least 4 min","17:25:40",":Unix Server"
"192.168.1.2","03-any3TEST ","Ping","Down at least 3 min","17:26:21",":windows host "
我的发现
可以结合使用以下两种方法来做到这一点。 我面临的主要问题是我无法将csv文件中的当前日期与时间结合在一起。
Import-Csv ".\out.csv" |
ForEach-Object {
$_.Date = [datetime]::Parse($_.Date).ToString('MM/dd/yyyy HH:mm')
}
Get-Date -Date "12/31/2015 23:59:59" -UFormat %s
使用Get-Date
,您可以选择手动覆盖值或使用其他datetime
例如:
Import-Csv ".\out.csv" |
ForEach-Object {
$tempDate = [datetime]::Parse($_.Date).ToString('MM/dd/yyyy HH:mm')
Get-Date -Hour $tempDate.Hour -Minute $tempDate.Minute -UFormat %s
}
我会这样:
Import-Csv ".\out.csv" |
ForEach-Object {
$_.Date = Get-Date -Date $_.Date -UFormat %s
}
如果您想更清楚地知道它在做什么,可以将时间转换为时间跨度,可以将其添加到日期中。 然后,您可以将其传送到Get-Date进行格式化:
Import-Csv ".\out.csv" |
ForEach-Object {
$_.Date = [DateTime]::Today + [Timespan]::Parse($_.Date) | Get-Date -UFormat %s
}
[DateTime]::Today
是今天的午夜(时间00:00:00)。
好的,尝试下面的代码。 找到无法解析的日期时,它将向控制台写入警告消息。 它不会解决问题,但是会告诉您问题出在哪里。
Import-Csv ".\out.csv" |
ForEach-Object {
$t = [timespan]::Zero
if ([Timespan]::TryParse($_.Date,[ref]$t)) {
$_.Date = [DateTime]::Today + $t | Get-Date -UFormat %s
}
else {
Write-Warning "Unable to parse timespan '$($_.Date)' for record $($_)"
}
}
这对我来说在2.0而不是4.0版本上是完美的。 如果可能的话,请让我知道为什么不能在Powershell 4.0上运行。
$EventTime = $($s.EventTime)
$ value =获取日期-format d $ Imported = Import-Csv'C:\\ PathToFIle \\ out.csv'
$ Output = foreach($ i在$ Imported中){foreach($ c在$ EventTime中){
$time=$i.eventtime
$fulltime =$value+' '+$time
$i.EventTime = Get-Date -Date $fulltime -UFormat %s
}
$i
}
$输出$输出| Export-Csv'C:\\ PathToFIle \\ TestComputers.csv'-NoTypeInformation
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.