简体   繁体   中英

convert date time to Epoch format in CSV in powershell

I want to convert datetime to Epoch format in csv file using PowerShell. In the csv file I have only time data, and I want to use current date and time specified in csv to convert it to Epoch format .

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 " 

My findings

This should be doable using a combination of the below two. The main issue I am facing is that I am unable to combine the current date with the time in csv file.

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

When using Get-Date , you have the option to override values manually or using another datetime

For example:

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
}

I'd do it like this:

Import-Csv ".\out.csv" |
ForEach-Object {
    $_.Date = Get-Date -Date $_.Date -UFormat %s
}

If you want to be a bit more explicit about what it's doing, you can convert the time to a timespan, which can be added to a date. Then you can pipe it to Get-Date to format it:

Import-Csv ".\out.csv" |
ForEach-Object {
    $_.Date = [DateTime]::Today + [Timespan]::Parse($_.Date) | Get-Date -UFormat %s
}

[DateTime]::Today is today's date at midnight (time 00:00:00).


Ok, try the code below. It will write a warning message to the console when it finds a date that it can't parse. It won't fix the problem, but it will tell you where the problem is.

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 $($_)"
    }
}

This is working perfectly for me in 2.0 and not on 4.0 version . If possible please let me know why is is not working on powershell 4.0 .

$EventTime = $($s.EventTime)

$value = get-date -format d $Imported = Import-Csv 'C:\\PathToFIle\\out.csv'

$Output = foreach ($i in $Imported) { foreach ($c in $EventTime) {

    $time=$i.eventtime

    $fulltime =$value+' '+$time


     $i.EventTime = Get-Date -Date $fulltime -UFormat %s


}
$i

}

$Output $Output | Export-Csv 'C:\\PathToFIle\\TestComputers.csv' -NoTypeInformation

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM