2016-03-11 3 views
0

У меня есть. CSV-файл, в котором я создал столбец, где даты даны случайным образом. Мне нужен сценарий, в котором я хочу сравнить сегодняшнюю дату, то есть sysdate с датой, присутствующей в файле CSV. И если сегодня даты совпадают с датой в CSV, тогда он будет Write-Output «true» else «false».Как сравнить sysdate и дату, хранящуюся в CSV-файле

на дату строки выглядят следующим образом:

 3/10/2016 
4/12/2016 
3/09/2016

Я попытался это:

$CheckDate = (Get-Date).Date 
Import-Csv 'C:\Downloads\date.csv' | Select-Object -Property *, @{n='Date';e={ [DateTime]::ParseExact($_.'Date', 'MM-dd-yyyy') }} -Exclude 'Date' | ForEach-Object { 
    if ($_.'Date' -eq $CheckDate) { 
     write-Output "$true" 
    } else { 
     Write-output "$false" 
    } 
} 

и это:

$data = Get-item "C:\Downloads\date.csv" 
$a = Get-Date -Format d 
if($a = $data) { 
    write-output "Its working!!" 
} else { 
    write-output "Its not working!!" 
} 
+1

Можете ли вы описать или показать, что уже пробовали? И, пожалуйста, укажите примеры ввода csv. – Squiggle

+0

Что означает «случайная манера»? Вы имеете в виду «случайный» формат? –

+0

случайным здесь означает не в последовательном порядке, как мм/дд/гггг 3/10/2016 4/12/2016 3/09/2016 .... выходит на – Amar

ответ

1

Вы говорите, что даты в файле CSV выглядят так:

3/10/2016 
4/12/2016 
3/09/2016 

Но в вашем примере вы пытаетесь проанализировать дату, используя строку формата MM-dd-yyyy - т.е. ожидая месяц с ведущими нулями и - в качестве разделителя.

правильный формат даты для образцов вы описываете бы %M/dd/yyyy:

PS C:\> [datetime]::ParseExact('3/10/2016','%M/dd/yyyy',$null) 

Thursday, March 10, 2016 12:00:00 AM 
+0

Передние косые черты должны быть экранированы ('\ /'), иначе они будут соответствовать любому разделителю дат настроен в региональных настройках. С учетом сказанного, для данного формата синтаксиса формата не требуется. Вы можете просто записать его: '[datetime] '3/09/2016''. Обратите внимание, если вы хотите использовать 'ParseExact()': я бы рекомендовал предоставить фактическую информацию о культуре для третьего параметра ('[CultureInfo] :: InvariantCulture', если вы не хотите, чтобы определенная культура). Я видел, что 'ParseExact()' терпит неудачу в некоторых случаях, когда вместо этого использовался '$ null'. –

+0

Спасибо за совет ..! Но я не получаю желаемый результат. Я не могу сравнить даты. – Amar