如何比较 powershell v2.0 中的两个自定义日期

how to compare two custom dates in powershell v2.0

是否可以比较 2 个自定义日期。我正在尝试检查变量是否持有 date1 小于 date2,如果是,报告说 date1 是旧日期。

我从 a.来自日志文件的 date1 和来自应用程序本身的 date2

现在,date1 和 date2 都符合要求的格式,即

$Date1 = Tue,Aug 16, 2016 12:40:03
$Date2 = Mon,Aug 22, 2016 16:33:02

我的下一步是比较这两个日期并报告日期 1 是否比日期 2 更早,我不知道如何继续。非常感谢任何 help/ideas。

感谢 Pete 和 Ansgar Wiechers

更新工作代码:

$Date1DateTime = [DateTime]::ParseExact($Date1,'ddd,MMM d, yyyy, HH:mm:ss',[Globalization.CultureInfo]::InvariantCulture); $Date2DateTime = [DateTime]::ParseExact($Date2,'ddd,MMM d, yyyy, HH:mm:ss',[Globalization.CultureInfo]::InvariantCulture); $Date1DateTime -lt $Date2DateTime

如果字符串排序顺序与日期排序顺序相同,则只能比较日期字符串。例如,ISO 格式的日期字符串是可比较的:

2016-08-16T12:40:03
2016-08-22T16:33:02

自定义格式的日期字符串不是,因为 TM 之后,但 8 月 16 日实际上应该在 8 月 22 日之前:

Tue,Aug 16, 2016 12:40:03
Mon,Aug 22, 2016 16:33:02

如果您没有 ISO 格式的日期字符串,通常最好将它们解析为实际的 DateTime 值(如 建议的那样),特别是如果您的参考值最初是 DateTime 无论如何。

$fmt     = 'ddd,MMM d, yyyy, HH:mm:ss'
$culture = [Globalization.CultureInfo]::InvariantCulture

$Date1 = Get-Date $LogFileDate
$val   = (b2b.exe -readparams $param | Select-Object -Skip 1 -First 1) -split '='
$Date2 = [DateTime]::ParseExact($val[1], $fmt, $culture)

if ($Date1 -lt $Date2) {
  ...
}