$Deldate = "19-06-2018"
$Newdate = "04-06-2018"
我需要检查哪个日期更大。
if ($Deldate -ge $NewDate) {
write-host "NewDate is bigger"
}
else {
write-host "Deldate is bigger"
}
这对我不起作用,看起来格式不是" System.DateTime"。我从外部CSV文件中获取日期值。我如何找到解决方案?
答案 0 :(得分:3)
您应该能够将您创建的字符串转换为“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"
}
返回正确的结果。您不能简单地使用Get-Date cmdlet,因为-Date
required参数还要求参数的类型为“DateTime”,因此您首先必须将字符串强制转换为DateTime类型。
答案 1 :(得分:1)
最初建议......
我要将日期格式从DD-MM-YYYY
更改为MM-DD-YYYY
:
$Deldate = Get-Date "06-19-2018"
$Newdate = Get-Date "06-04-2018"
if ($Deldate -gt $Newdate) {
'Deldate is larger'
}
else {
'Newdate is larger or equal'
}
我根据您提供的相应日期创建两个日期对象。我比较了这两个对象; PowerShell知道如何进行日期数学运算。
适用于美式日期。
经过多次讨论......
但是,对于非美国式日期,请考虑调用datetime的构造函数:
$Deldate = New-object 'datetime' -ArgumentList 2018, 6, 19, $null, $null, $null
$Newdate = New-object 'datetime' -ArgumentList 2018, 6, 4, $null, $null, $null
if ($Deldate -gt $Newdate) { 'Deldate is larger' } else { 'Newdate is larger or equal' }
或者,正如所提出的[datetime]::ParseExact()
方法;记录here。
答案 2 :(得分:0)
PowerShell适用于日期;它只需要知道它是一个约会......
$Deldate = get-date "19-06-2018"
$Newdate = get-date "04-06-2018"
if ($Deldate -ge $NewDate) {
write-host "NewDate is bigger"
}
else {
write-host "Deldate is bigger"
}
注意:您可以投射[datetime]$Deldate ="19-06-2018"
,但正如 PowerTip: Convert String into DateTime Object 的评论中所述,它仅对美国日期格式有效。