Что хороший способ сравнить даты в CSV-файл, который выглядит следующим образом:Сравнение дат с различными форматами в CSV файл
Date1,Date2,Date3
11/10/2016 9:45:00 PM,20161110,11/10/2016
11/15/2016 11:24:00 PM,20160924,11/10/2016
Если совпадение найдено, добавьте столбец как так ...
Date1,Date2,Date3,MatchDates
11/10/2016 9:45:00 PM,20161110,11/10/2016,Match Found
11/15/2016 11:24:00 PM,20160924,11/10/2016,No Match Found
обновленный
Попытка код, который в комментариях:
при сравнении Тхи s с 2 колоннами ...
$csvFile = 'C:\Scripts\Tests\test1.csv'
Import-Csv $csvFile | Select-Object *, @{n='MatchDates';e={
if(([datetime]$_.Date1).Date -eq $_.Date3){
'Match Found'
}Else{
'No Match Found'
}}} |
Export-Csv "$csvFile-results.csv" -NoTypeInformation -Force
выход (isCorrect) ...
Date1,Date2,Date3,MatchDates
11/10/2016 9:45:00 PM,20161110,11/10/2016,Match Found
11/15/2016 11:24:00 PM,20160924,11/10/2016,No Match Found
Однако, если я пытаюсь сравнить все 3 колонки, используя следующий код
Import-Csv $csvFile | Select-Object *, @{n='MatchDates';e={
if((([datetime]$_.Date1).Date -eq $_.Date3) -and (([datetime]$_.Date2).Date -eq $_.Date3) -and (([datetime]$_.Date1).Date -eq $_.Date2)){
'Match Found'
}Else{
'No Match Found'
}}} |
Export-Csv "$csvFile-results.csv" -NoTypeInformation -Force
выход (isNotCorrect) ...
Date1,Date2,Date3,MatchDates
11/10/2016 9:45:00 PM,20161110,11/10/2016,
11/15/2016 11:24:00 PM,20160924,11/10/2016,No Match Found
As вы можете увидеть значение строки 1, а последний столбец - $null
вместо того, чтобы показывать Match Found
Возможно, я что-то не понимаю правильно?
В качестве роли [datetime] или использовать [datetime] :: parseexact()? – Matt
Это, конечно, предполагает, что эти даты имеют одинаковый формат. Также вы сравниваете дату в первом столбце, чтобы увидеть, совпадает ли она с датой в последнем столбце? Если они отформатированы так же, вы можете почти просто уйти с базовым '-like' – Matt
' ([datetime] "11/10/2016 9:45:00 PM"). Дата -eq "11/10/2016" ' например. или '([datetime] $ _. Date1) .Date -eq $ _. Date3' – Matt