将CSV中的日期与参考日期进行比较

将CSV中的日期与参考日期进行比较,csv,powershell-3.0,Csv,Powershell 3.0,我正在使用PowerShell脚本解析CSV文件。我想将从CSV文件读取的日期与当前日期进行比较,并执行某些操作或退出处理脚本。有人能帮我解决以下问题吗 CSV文件中的日期如下所示: 交易日期:2015年12月14日 $CurrentTimeStamp = Get-Date $TradeDate = $CurrentTimeStamp.ToString("yyyyMMdd") $CheckDate = $TradeDate 交易日期如下: $FileTradeDate = $Cols[1] $

我正在使用PowerShell脚本解析CSV文件。我想将从CSV文件读取的日期与当前日期进行比较,并执行某些操作或退出处理脚本。有人能帮我解决以下问题吗

CSV文件中的日期如下所示:
交易日期:2015年12月14日

$CurrentTimeStamp = Get-Date
$TradeDate = $CurrentTimeStamp.ToString("yyyyMMdd")
$CheckDate = $TradeDate
交易日期如下:

$FileTradeDate = $Cols[1]
$TradeDate = $FileTradeDate.ToString("yyyy-MM-dd")
if ($TradeDate -ne $CheckDate) {
  $host.Exit()
} else {
  $TradeDate = $FileTradeDate
  LogWrite $TradeDate
}
我得到以下错误:

找不到“ToString”的重载和参数计数:“1”。
在\\multinasdub301\Software\SysAdmin\WebDownloads\ProcessUBSFrescoCCYHDG.ps1:139 char:5
+$TradeDate=$FileTradeDate.ToString(“yyyy-MM-dd”)
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodException
+FullyQualifiedErrorId:MethodCountNotFindBest

从CSV文件读取的数据已经是一个字符串,从您的示例来看,它的格式似乎已经是
yyyy-MM-dd
,因此无需再次将其转换为字符串。但是,您需要使用相同的格式格式化
$checkDate
,否则字符串将永远不匹配:

$CheckDate = (Get-Date).ToString('yyyy-MM-dd')
或者,您可以将CSV中的日期解析为实际的
DateTime
值,并比较两个日期:

$CheckDate = (Get-Date).Date
$culture   = [Globalization.CultureInfo]::InvariantCulture

Import-Csv 'C:\path\to\your.csv' |
  Select-Object -Property *, @{n='Trading Date';e={
      [DateTime]::ParseExact($_.'Trading Date', 'yyyy-MM-dd', $culture)
    }} -Exclude 'Trading Date' |
  ForEach-Object {
    if ($_.'Trading Date' -eq $CheckDate) {
      $TradeDate = $FileTradeDate
      LogWrite $TradeDate
    }
  }

尝试了第一个选项,并给出以下错误:
方法调用失败,因为[System.Management.Automation.Internal.Host.InternalHost]不包含名为“Exit”的方法。在\\multi-nasdub301\Software\SysAdmin\WebDownloads\ProcessUBSFrescoFI.ps1:148 char:6+$Host.Exit()+~~~~~~~~~~~~~~~~~~~+CategoryInfo:InvalidOperation:(:)[],RuntimeException+FullyQualifiedErrorId:MethodNotFound
这与您的问题无关,但是使用
exit
而不是
$host.exit()
。或者更确切地说,如果日期不相等,不要退出,而是反转条件,什么也不做。请参阅更新的答案。