当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 实用的 PowerShell 获取日期,揭开日期和时间的神秘面纱

作者:精品下载站 日期:2024-12-14 13:03:36 浏览:13 分类:玩电脑

实用的 PowerShell 获取日期,揭开日期和时间的神秘面纱


PowerShell 可以做很多事情,并且像任何优秀的编程语言一样,它几乎可以对日期执行任何您想要的操作。使用 PowerShell 获取日期命令和其他技术,您可以查找今天的日期、明天的日期、格式化日期等等。

在本文中,您将了解有关日期和 PowerShell 的所有内容!

先决条件

要按照本文中的示例进行操作,请确保您提前满足以下先决条件:

  • Windows PowerShell v5 或更高版本 - 即使您使用的是早期版本,所有示例仍然可能正常工作。

使用 PowerShell 查找当前日期

使用 PowerShell 发现当前日期的最简单方法之一是使用 Get-Date cmdlet。该命令显示当前日期和时间,如下所示。

PS> Get-Date
Sunday, November 22, 2020 1:25:57 AM

默认情况下,PowerShell Get Date 命令看起来只返回当前日期和时间,但实际上,它实际上返回了更多信息。要查找此信息,请将输出通过管道传输到 Format-List cmdlet,如下所示。

PS> Get-Date | Format-List
DisplayHint : DateTime
Date        : 11/22/2020 12:00:00 AM
Day         : 22
DayOfWeek   : Sunday
DayOfYear   : 327
Hour        : 1
Kind        : Local
Millisecond : 163
Minute      : 26
Month       : 11
Second      : 2
Ticks       : 637416051621635773
TimeOfDay   : 01:26:02.1635773
Year        : 2020
DateTime    : Sunday, November 22, 2020 1:26:02 AM

您还可以使用 Get-Member cmdlet 通过运行 Get-Date | 来查找所有对象属性。还获取-Member -MemberType Properties

如果您检查 Get-Date 返回的对象类型,您会发现它是 System.DateTime 对象类型。此类公开了您看到的所有不同属性和方法。您可以使用 Get-Member 或使用 GetType() 来发现它的对象类型,如下所示。

PS> (Get-Date).GetType().FullName
System.DateTime

一旦您看到所有可用的属性,您就可以使用点符号引用它们,如下所示。

PS> (Get-Date).Year
2020

PS> (Get-Date).DayOfWeek
Sunday

PS> (Get-Date).Month
11

PS> (Get-Date).DayOfYear
327

点符号对你来说有点太“devvy”了吗?如果是这样,您还可以使用 DisplayHint 参数来实现相同的结果。

PS> Get-Date -DisplayHint Date
Sunday, November 22, 2020

PS> Get-Date -DisplayHint Time
2:29:35 AM

PS> Get-Date -DisplayHint DateTime
Sunday, November 22, 2020 2:29:39 AM

使用 PowerShell Get Date 是查找当前日期和各种属性的最简单方法,但您还可以做更多事情!

使用 PowerShell 进行日期算术

假设您需要知道过去或未来一定天数、年数或分钟数的日期和/或时间。您可以使用方法找到此信息。

使用 DateTime 方法

PowerShell Get Date 命令返回的 System.DateTime 对象具有多种可以调用的方法来添加或删除时间块。如果您运行 Get-Date | Get-Member,您将看到以 Add 开头的各种方法。

AddDays              Method         datetime AddDays(double value)
AddHours             Method         datetime AddHours(double value)
AddMilliseconds      Method         datetime AddMilliseconds(double value)
AddMinutes           Method         datetime AddMinutes(double value)
AddMonths            Method         datetime AddMonths(int months)
AddSeconds           Method         datetime AddSeconds(double value)
AddTicks             Method         datetime AddTicks(long value)
AddYears             Method         datetime AddYears(int value)

您可以调用每个方法来查找未来或过去的日期/时间。下面您将看到一些调用这些方法及其输出的示例。

#Adding 8 days to the current date
PS> (Get-Date).AddDays(8)
Monday, November 30, 2020 1:59:39 AM

#Adding 3 hours to the current time
PS> (Get-Date).AddHours(3)
Sunday, November 22, 2020 4:59:51 AM

#Adding five years to the current date
PS> (Get-Date).AddYears(5)
Saturday, November 22, 2025 2:00:11 AM

#Subtracting 8 days from the current date using a negative number.
PS> (Get-Date).AddDays(-8)
Saturday, November 14, 2020 2:02:43 AM

使用新时间跨度

如果您想知道两个日期之间的差异怎么办?不只是添加特定数量的时间块?执行此操作的一种方法是使用 New-Timespan cmdlet。 New-Timespan cmdlet 生成表示日期/时间差异或跨度的 TimeSpan 对象。

通过提供StartEnd 日期/时间作为参数来使用New-TimeSpan cmdlet。例如,如果您想查找 2020 年 11 月 23 日午夜与 2020 年 12 月 31 日午夜之间的差异,您可以使用以下代码片段。

使用 TimeSpan 对象,您可以找到几乎任何您想要的增量的日期/时间差异。

PS> $StartDate = Get-Date -Month 11 -Day 23 -Year 2020 -Hour 00 -Minute 00 -Second 00
PS> $EndDate = Get-Date -Month 12 -Day 31 -Year 2020 -Hour 00 -Minute 00 -Second 00
PS> $StartDate
Monday, November 23, 2020 12:00:00 AM

PS> $EndDate
Thursday, December 31, 2020 12:00:00 AM

PS> New-TimeSpan -Start $StartDate -End $EndDate

Days              : 38
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 672
Ticks             : 32832006722080
TotalDays         : 38.0000077801852
TotalHours        : 912.000186724444
TotalMinutes      : 54720.0112034667
TotalSeconds      : 3283200.672208
TotalMilliseconds : 3283200672.208

比较日期

您不仅可以找到日期和时间的差异,还可以使用标准 PowerShell 运算符进行比较。 PowerShell 知道某个日期何时“小于”(早于)或“大于”(晚于)另一个日期。

要比较日期,只需使用 PowerShell Get Date 命令创建两个 DateTime 对象,或者使用 [DateTime] 转换字符串,然后使用标准 PowerShell 运算符(例如 lt)即可代码>或gt。

您可以在下面看到比较日期的简单示例。

#Declaring the date
PS> $Date1 = (Get-Date -Month 11 -Day 14 -Year 2020)
PS> $Date2 = Get-Date
PS> $Date1 -lt $Date2
True

将字符串转换(转换)为 DateTime 对象

PowerShell 还可以以各种格式显示日期。例如,假设您有一个 CSV 文件或电子表格,其中包含按照下面 date_time_utc 列中所示格式定义的各种日期。当前格式为 YYYY-MM-DDThh:mm:ss.0000000Z

您想要解析此文件并查找日期为 7 天或更早的所有行。

[玩转系统] 实用的 PowerShell 获取日期,揭开日期和时间的神秘面纱

默认情况下,PowerShell 不知道 2020-09-07T13:35:08.4780000Z 是日期和时间;它只是认为这是一个简单的字符串。为了让 PowerShell 理解,您必须首先将其转换为 DateTime 对象,如 Get-Date 返回。

要将字符串转换DateTime对象,请在字符串(或变量)前面加上[DateTime]。当您执行此操作时,PowerShell 会尝试将该字符串解释为日期和时间,然后为您提供该对象类型上可用的所有属性和方法。

PS> $Date = "2020-09-07T13:35:08.4780000Z"
PS> [DateTime]$Date
Monday, September 07, 2020 1:35:08 PM

使用 PowerShell 获取日期:PowerShell 日期格式

现在您已经了解了使用日期的基本方法,是时候深入研究该主题了。让我们尝试一下使用不同的格式来显示日期。

每当您运行 PowerShell Get Date 命令时,您都会看到类似 Monday, September 07, 2020 1:35:08 PM 的输出。此输出实际上是一个具有属性和方法的 DateTime 对象;不是一个简单的字符串。但是,您可以将此 DateTime 对象转换为字符串,并使用各种日期格式化方法以不同方式表示它。

日期时间方法

更改 DateTime 对象显示方式的一种方法是使用 DateTime 对象上的方法。 DateTime 对象有四种方法可用于更改格式:

    ToLongDateString()
    ToShortDateString()
    ToLongTimeString()
    ToShortTimeString()

    您可以在下面查看使用 ToShortDateString()ToShortTimeString() 方法的示例。

    PS> [DateTime]$Date = $Date
    PS> $date.ToShortDateString() + " " + $date.ToShortTimeString()
    9/7/2020 7:05 PM
    

    格式参数

    更改 DateTime 对象的日期格式的一种方法是使用 Get-Date 生成对象并使用 Format 参数更改格式。 Format 参数接受一个字符串,每个字符代表日期/时间字符串的外观。

    您可以查看可与 Format 参数一起使用的字符的一些示例。

    #To display full date pattern with short time pattern
    PS> Get-Date -Format f
    Sunday, November 22, 2020 4:26 AM
    
    #To display full date pattern with long time pattern
    PS> Get-Date -Format F
    Sunday, November 22, 2020 4:26:31 AM
    
    #To display short date pattern
    PS> Get-Date -Format d
    11/22/2020
    
    #To display long date pattern
    PS> Get-Date -Format D
    Sunday, November 22, 2020
    
    #Year month pattern
    PS> Get-Date -Format Y
    November 2020
    
    ## Combining format characters
    PS> Get-Date -Format "dddd dd-MM-yyyy HH:mm K"
    Sunday 22-11-2020 03:41 +05:30
    

    查看 Microsoft 文档,了解可与 Format 参数一起使用的所有字符的完整详细信息。

    一旦使用 Format 参数,您就会看到 Get-Date 不再返回 DateTime 对象,而是字符串。

    PS> (Get-Date -Format D).GetType().FullName
    System.String
    

    UFormat 参数

    Format 参数类似,您还有一个带有 Get-Date cmdlet 的 UFormat 参数。 UFormat 参数允许您使用 UNIX 日期格式来定义日期格式。

    UFormat 参数与 Format 参数类似,您可以组合日期格式字符来更改日期作为字符串返回的方式。例如,尝试以下格式并查看返回的内容。

    PS> Get-Date -UFormat %A
    PS> Get-Date -UFormat %b
    PS> Get-Date -UFormat %B
    

    您还可以组合这些日期格式字符。下面的代码片段使用 dmY 字符以 dd-mm-yyyy 格式返回日期,并且 使用r 字符返回使用时区t 字符的12 小时格式的时间。

    PS> Get-Date -UFormat "%d-%m-%Y %r %Z"
    22-11-2020 06:10:55 PM +05
    

    查看 Microsoft 文档,了解可与 UFormat 参数一起使用的所有字符的完整详细信息。

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯