PowerShell:比较日期

时间:2011-02-23 21:08:13

标签: powershell

我正在查询日期的数据源。根据我要搜索的项目,它可能有多个与之相关的日期。

get-date ($Output | Select-Object -ExpandProperty "Date")

输出示例如下:

Monday, April 08, 2013 12:00:00 AM
Friday, April 08, 2011 12:00:00 AM

我想比较一下这些日期,并回顾未来的日期。

4 个答案:

答案 0 :(得分:70)

Get-Date返回DateTime对象时,您可以直接比较它们。一个例子:

(get-date 2010-01-02) -lt (get-date 2010-01-01)

将返回false。

答案 1 :(得分:1)

我想展示它除了检查“ -lt”之外还有多强大。

示例:我用它来计算Windows事件视图应用程序日志中的时间差:

获取两个日期时间之间的时差:

import React, { Component } from 'react';

class ContactUs extends Component {

    render(){
        console.log("RENDER");
        return (
            <div>
                <h1> Contact Us</h1>
            </div>
        );
    }
}

export default ContactUs;

已创建对象:

PS> $Obj = ((get-date "10/22/2020 12:51:1") - (get-date "10/22/2020 12:20:1 "))

直接访问项目:

PS> $Obj


Days              : 0
Hours             : 0
Minutes           : 31
Seconds           : 0
Milliseconds      : 0
Ticks             : 18600000000
TotalDays         : 0.0215277777777778
TotalHours        : 0.516666666666667
TotalMinutes      : 31
TotalSeconds      : 1860
TotalMilliseconds : 1860000

答案 2 :(得分:0)

$Output中获取最高级日期的最新但更完整的答案

## Q:\test\2011\02\SO_5097125.ps1
## simulate object input with a here string 
$Output = @"
"Date"
"Monday, April 08, 2013 12:00:00 AM"
"Friday, April 08, 2011 12:00:00 AM"
"@ -split '\r?\n' | ConvertFrom-Csv

## use Get-Date and calculated property in a pipeline
$Output | Select-Object @{n='Date';e={Get-Date $_.Date}} |
    Sort-Object Date | Select-Object -Last 1 -Expand Date

## use Get-Date in a ForEach-Object
$Output.Date | ForEach-Object{Get-Date $_} |
    Sort-Object | Select-Object -Last 1

## use [datetime]::ParseExact
## the following will only work if your locale is English for day, month day abbrev.
$Output.Date | ForEach-Object{
    [datetime]::ParseExact($_,'dddd, MMMM dd, yyyy hh:mm:ss tt',$Null)
} | Sort-Object | Select-Object -Last 1

## for non English locales
$Output.Date | ForEach-Object{
    [datetime]::ParseExact($_,'dddd, MMMM dd, yyyy hh:mm:ss tt',[cultureinfo]::InvariantCulture)
} | Sort-Object | Select-Object -Last 1

## in case the day month abbreviations are in other languages, here German
## simulate object input with a here string 
$Output = @"
"Date"
"Montag, April 08, 2013 00:00:00"
"Freidag, April 08, 2011 00:00:00"
"@ -split '\r?\n' | ConvertFrom-Csv
$CIDE = New-Object System.Globalization.CultureInfo("de-DE")
$Output.Date | ForEach-Object{
    [datetime]::ParseExact($_,'dddd, MMMM dd, yyyy HH:mm:ss',$CIDE)
} | Sort-Object | Select-Object -Last 1

答案 3 :(得分:0)

考虑到您还想包括时间,我已经包括了示例。我将日期时间放在 ISO8601 中,因此它以与语言环境无关的方式工作。

2013 年 4 月 8 日星期一上午 12:00:00 2011 年 4 月 8 日星期五 12:00:00 上午

(Get-date "2013-04-08T00:00:00") -lt (Get-Date "2011-04-08T00:00:00")
<块引用>

错误