2016-03-11 67 views
0

我有一個.csv文件,我在其中創建了一個以隨機方式給出日期的列。我想要一個腳本,在該腳本中我想比較今天的日期,即sysdate和CSV文件中存在的日期。 如果今天的日期與CSV中的日期匹配,那麼它將Write-Output「true」或「false」。如何比較系統日期和存儲在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

隨機在這裏是指在不喜歡的MM/DD/YYYY 2016年3月10日 2016年4月12日 2016年3月9日連續的方式....推移 – 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

正斜線需要被轉義('\ /'),否則它們會匹配任何日期分隔符在區域設置中進行配置。這就是說,對於這種特定的日期格式解析不是必需的。你可以簡單地施放它:'[日期時間]'2016年3月9日'。注意如果你想使用'ParseExact()':我建議提供第三個參數的實際文化信息('[CultureInfo] :: InvariantCulture',如果你不想要一個特定的文化)。我已經看到'ParseExact()'在某些情況下失敗了,而是使用了'$ null'。 –

+0

感謝您的建議..! 但我沒有得到所需的輸出。我無法比較日期。 – Amar

相關問題