在 PowerShell 中比较字符串中的日期

rpr*_*rpr 3 powershell

$Deldate = "19-06-2018"
$Newdate = "04-06-2018"
Run Code Online (Sandbox Code Playgroud)

我需要检查哪个日期更大。

if ($Deldate -ge $NewDate) {
    write-host "NewDate is bigger"
} 
else {
    write-host "Deldate is bigger"
}
Run Code Online (Sandbox Code Playgroud)

这对我不起作用,而且格式看起来不是“System.DateTime”。我从外部 CSV 文件获取日期值。我该如何找到解决方案?

Bry*_*ald 7

您应该能够将创建的字符串转换为“datetime”类型,如下所示:

$Deldate = "19-06-2018"
$Newdate = "04-06-2018"

$Deldate = [datetime]::ParseExact("$Deldate", 'dd-MM-yyyy', $null)
$Newdate = [datetime]::ParseExact("$Newdate", 'dd-MM-yyyy', $null)

if ($Deldate -ge $NewDate) {
    write-output "NewDate is bigger than or equal to"
}
else {
    write-output "Deldate is bigger"
}
Run Code Online (Sandbox Code Playgroud)

这将返回正确的结果。您不能简单地使用 Get-Date cmdlet,因为-Date所需参数还要求该参数为“DateTime”类型,因此您首先必须将字符串转换为 DateTime 类型。