Get-Date

获取当前日期和时间。

语法

Get-Date
   [[-Date] <DateTime>]
   [-Year <Int32>]
   [-Month <Int32>]
   [-Day <Int32>]
   [-Hour <Int32>]
   [-Minute <Int32>]
   [-Second <Int32>]
   [-Millisecond <Int32>]
   [-DisplayHint <DisplayHintType>]
   [-Format <String>]
   [-AsUTC]
   [<CommonParameters>]
Get-Date
   [[-Date] <DateTime>]
   [-Year <Int32>]
   [-Month <Int32>]
   [-Day <Int32>]
   [-Hour <Int32>]
   [-Minute <Int32>]
   [-Second <Int32>]
   [-Millisecond <Int32>]
   [-DisplayHint <DisplayHintType>]
   -UFormat <String>
   [<CommonParameters>]
Get-Date
   -UnixTimeSeconds <Int64>
   [-Year <Int32>]
   [-Month <Int32>]
   [-Day <Int32>]
   [-Hour <Int32>]
   [-Minute <Int32>]
   [-Second <Int32>]
   [-Millisecond <Int32>]
   [-DisplayHint <DisplayHintType>]
   [-Format <String>]
   [-AsUTC]
   [<CommonParameters>]
Get-Date
   -UnixTimeSeconds <Int64>
   [-Year <Int32>]
   [-Month <Int32>]
   [-Day <Int32>]
   [-Hour <Int32>]
   [-Minute <Int32>]
   [-Second <Int32>]
   [-Millisecond <Int32>]
   [-DisplayHint <DisplayHintType>]
   -UFormat <String>
   [<CommonParameters>]

说明

cmdlet Get-Date 获取一个 DateTime 对象,该对象表示当前日期或指定的日期。 Get-Date 可以采用多种 .NET 和 UNIX 格式设置日期和时间的格式。 可以使用 Get-Date 生成日期或时间字符串,然后将该字符串发送到其他 cmdlet 或程序。

Get-Date 使用操作系统的当前区域性设置来确定输出格式的方式。 若要查看计算机的设置,请使用 (Get-Culture).DateTimeFormat

示例

示例 1:获取当前日期和时间

在此示例中, Get-Date 显示当前系统日期和时间。 输出格式为 long-date 和 long-time 格式。

Get-Date

Tuesday, June 25, 2019 14:53:32

示例 2:获取当前日期和时间的元素

此示例演示如何使用 Get-Date 获取日期或时间元素。 参数使用 日期时间DateTime 参数。

Get-Date -DisplayHint Date

Tuesday, June 25, 2019

Get-Date 使用 DisplayHint 参数和 Date 参数来仅获取日期。

示例 3:使用 .NET 格式说明符获取日期和时间

在此示例中,.NET 格式说明符用于自定义输出的格式。 输出是一个 String 对象。

Get-Date -Format "dddd MM/dd/yyyy HH:mm K"

Tuesday 06/25/2019 16:17 -07:00

Get-Date 使用 Format 参数指定多个格式说明符。

此示例中使用的 .NET 格式说明符定义如下:

说明符 定义
dddd 一周中的某一天 - 全名
MM 月份
dd 月份中的某一天 - 2 位数字
yyyy 4 位格式的年份
HH:mm 24 小时格式的时间 - 无秒
K 与世界时坐标 (UTC) 的时区偏移量

有关 .NET 格式说明符的详细信息,请参阅 自定义日期和时间格式字符串

示例 4:使用 UFormat 说明符获取日期和时间

在此示例中,多个 UFormat 格式说明符用于自定义输出的格式。 输出是一个 String 对象。

Get-Date -UFormat "%A %m/%d/%Y %R %Z"

Tuesday 06/25/2019 16:19 -07

Get-Date 使用 UFormat 参数指定多个格式说明符。

此示例中使用的 UFormat 格式说明符定义如下:

说明符 定义
%A 一周中的某一天 - 全名
%m 月份
%d 月份中的某一天 - 2 位数字
%Y 4 位格式的年份
%R 24 小时格式的时间 - 无秒
%Z 与世界时坐标 (UTC) 的时区偏移量

有关有效 UFormat 格式说明符的列表,请参阅 Notes 部分。

示例 5:获取一年中的日期

在此示例中,属性用于获取一年中的数字日期。

公历有 365 天,但闰年有 366 天。 例如,2020 年 12 月 31 日为第 366 天。

(Get-Date -Year 2020 -Month 12 -Day 31).DayOfYear

366

Get-Date 使用三个参数指定日期: YearMonthDay。 命令用括号包装,以便由 DayofYear 属性计算结果。

示例 6:检查是否根据夏令时调整了日期

此示例使用布尔方法验证日期是否按夏令时调整。

$DST = Get-Date
$DST.IsDaylightSavingTime()

True

一个变量, $DST 存储 的结果 Get-Date$DST 使用 IsDaylightSavingTime 方法测试日期是否调整为夏令时。

示例 7:将当前时间转换为 UTC 时间

在此示例中,当前时间转换为 UTC 时间。 系统区域设置的 UTC 偏移量用于转换时间。 “备注”部分中的表列出了有效的 UFormat 格式说明符。

Get-Date -UFormat "%A %B/%d/%Y %T %Z"
$Time = Get-Date
$Time.ToUniversalTime()

Wednesday June/26/2019 10:45:26 -07

Wednesday, June 26, 2019 17:45:26

Get-Date 使用 UFormat 参数和格式说明符来显示当前系统日期和时间。 格式说明符 %Z 表示 -07 的 UTC 偏移量。

变量 $Time 存储当前系统日期和时间。 $TimeToUniversalTime()使用 方法根据计算机的 UTC 偏移量转换时间。

示例 8:Create时间戳

在此示例中,格式说明符为目录名称创建时间戳 String 对象。 时间戳包括日期、时间和 UTC 偏移量。

$timestamp = Get-Date -Format o | ForEach-Object { $_ -replace ":", "." }
New-Item -Path C:\Test\$timestamp -Type Directory

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         6/27/2019    07:59                2019-06-27T07.59.24.4603750-07.00

变量 $timestamp 存储命令的结果 Get-DateGet-Date 使用 格式 说明符为小写 o 的 Format 参数创建时间戳 String 对象。 对象在管道 ForEach-Object中向下发送到 。 ScriptBlock 包含$_代表当前管道对象的变量。 时间戳字符串由用句点替换的冒号分隔。

New-Item 使用 Path 参数指定新目录的位置。 路径包含 $timestamp 变量作为目录名称。 Type 参数指定创建目录。

示例 9:转换 Unix 时间戳

此示例将 Unix 时间(由 1970-01-01 0:00:00 以来的秒数表示)转换为 DateTime。

Get-Date -UnixTimeSeconds 1577836800

Wednesday, January 01, 2020 12:00:00 AM

示例 10:返回解释为 UTC 的日期值

此示例演示如何将日期值解释为其 UTC 等效值。 例如,此计算机设置为 太平洋标准时间。 默认情况下, Get-Date 返回该时区的值。 使用 AsUTC 参数将值转换为 UTC 等效时间。

PS> Get-TimeZone

Id                         : Pacific Standard Time
DisplayName                : (UTC-08:00) Pacific Time (US & Canada)
StandardName               : Pacific Standard Time
DaylightName               : Pacific Daylight Time
BaseUtcOffset              : -08:00:00
SupportsDaylightSavingTime : True

PS> (Get-Date -Date "2020-01-01T00:00:00").Kind
Unspecified

PS> Get-Date -Date "2020-01-01T00:00:00"

Wednesday, January 1, 2020 12:00:00 AM

PS> (Get-Date -Date "2020-01-01T00:00:00" -AsUTC).Kind
Utc

PS> Get-Date -Date "2020-01-01T00:00:00" -AsUTC

Wednesday, January 1, 2020 8:00:00 AM

示例 11:显示固定区域性

使用 ToString() 当前区域性设置将 DateTime 对象转换为 String 。 但是,PowerShell 表达式解释始终使用固定区域性设置。

例如,在具有 en-US 有效区域性的系统上, ToString() 方法使用 en-US 区域性设置设置日期的格式。

# Get date using current culture en-US
(Get-Date 2024-03-19).ToString()

3/19/2024 12:00:00 AM

# Get date using invariant culture
"$(Get-Date 2024-03-19)"

03/19/2024 00:00:00

参数

-AsUTC

将日期值转换为 UTC 格式的等效时间。

此参数是在 PowerShell 7.1 中引入的。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Date

指定日期和时间。 Time 是可选的,如果未指定,则返回 00:00:00。 以当前所选区域设置的标准格式输入日期和时间。 可以使用 cmdlet 更改当前区域 Set-Culture 设置。

例如,使用美国英语:

Get-Date -Date "6/25/2019 12:30:22" 返回 2019 年 6 月 25 日,星期二 12:30:22

Type:DateTime
Aliases:LastWriteTime
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Day

指定显示月份中的某一天。 输入一个介于 1 到 31 之间的值。

如果指定的值大于一个月中的天数,则 PowerShell 会将天数添加到月份。 例如, Get-Date -Month 4 -Day 31 显示 5 月 1 日,而不是 4 月 31 日

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayHint

确定要显示日期和时间的哪些元素。

接受的值如下所示:

  • 日期:仅显示日期
  • 时间:仅显示时间
  • DateTime:显示日期和时间
Type:DisplayHintType
Accepted values:Date, Time, DateTime
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Format

采用格式说明符指示的 Microsoft .NET Framework 格式显示日期和时间。 Format 参数输出一个 String 对象。

有关可用 .NET 格式说明符的列表,请参阅 自定义日期和时间格式字符串

使用 Format 参数时, Get-Date 仅获取显示日期所需的 DateTime 对象的属性。 因此,DateTime 对象的某些属性和方法可能不可用。

从 PowerShell 5.0 开始,可以使用以下附加格式作为 Format 参数的值。

  • FileDate。 本地时间当前日期的文件或路径友好表示形式。 格式 (yyyyMMdd 区分大小写,使用 4 位年份、2 位月份和 2 位日期) 。 例如:20190627。

  • FileDateUniversal。 世界时当前日期的文件或路径友好表示形式 (UTC) 。 格式 (yyyyMMddZ 区分大小写,使用 4 位年份、2 位月份、2 位日期和字母 Z 作为 UTC 指示器) 。 例如:20190627Z。

  • FileDateTime。 以本地时间表示的当前日期和时间的文件或路径友好表示形式,格式为 24 小时。 格式 (yyyyMMddTHHmmssffff 区分大小写,使用 4 位年份、2 位月份、2 位日期、字母 T 作为时间分隔符、2 位小时、2 位分钟、2 位秒和 4 位毫秒) 。 例如:20190627T0840107271。

  • FileDateTimeUniversal。 世界时 (UTC) 当前日期和时间的文件或路径友好表示形式,格式为 24 小时。 格式 (yyyyMMddTHHmmssffffZ 区分大小写,使用 4 位年份、2 位月份、2 位日期、字母 T 作为时间分隔符、2 位小时、2 位分钟、2 位秒、4 位毫秒,并将字母 Z 用作 UTC 指示器) 。 例如:20190627T1540500718Z。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Hour

指定要显示的小时。 输入一个介于 0 到 23 的值。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Millisecond

指定日期中的毫秒。 输入一个介于 0 到 999 的值。

此参数是在 PowerShell 3.0 中引入的。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Minute

指定要显示的分钟。 输入一个介于 0 到 59 的值。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Month

指定要显示的月份。 输入介于 1 到 12 的值。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Second

指定要显示的秒。 输入一个介于 0 到 59 的值。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UFormat

采用 UNIX 格式显示日期和时间。 UFormat 参数输出字符串对象。

UFormat 说明符前面是百分号 (%) ,例如 、 %m%d%YNotes 部分包含有效的 UFormat 说明符表。

使用 UFormat 参数时, Get-Date 仅获取显示日期所需的 DateTime 对象的属性。 因此,DateTime 对象的某些属性和方法可能不可用。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UnixTimeSeconds

日期和时间以秒表示,自 1970 年 1 月 1 日 0:00:00。

此参数是在 PowerShell 7.1 中引入的。

Type:Int64
Aliases:UnixTime
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Year

指定要显示的年份。 输入 1 到 9999 的值。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

DateTime

可以通过管道将 DateTime 对象传递给此 cmdlet。

输出

DateTime

默认情况下,此 cmdlet 返回 DateTime 对象。

DateTime 对象向下发送到需要字符串输入的 cmdlet 时 Add-Content ,PowerShell 会将该对象转换为 String 对象。

使用 ToString() 当前区域性设置将 DateTime 对象转换为 String 。 但是,PowerShell 表达式解释始终使用固定区域性设置。 若要查看固定区域性的不同程度,请参阅 示例 11

若要显示对象的属性和方法,请将对象从管道向下发送到 Get-Member。 例如 Get-Date | Get-Member

String

使用 FormatUFormat 参数时,此 cmdlet 返回 String 对象。

备注

DateTime 对象输出的默认格式是当前所选区域设置的长日期格式和长时间格式。

下表中显示了有效的 UFormat 说明符

重要

UFormat 说明符在较新版本的 PowerShell 中更改或添加。 例如, %F 已在 PowerShell 6.2 中添加,因此在 Windows PowerShell 5.1 或更高版本中不可用。 在设计为在多个 PowerShell 版本上运行的脚本中使用 UFormat 说明符时,请记住这一点。

格式说明符 含义 示例
%A 一周中的某一天 - 全名 星期一
%a 一周中的某一天 - 缩写名称 Mon
%B 月份名称 - 完整 1 月
%b 月份名称 - 缩写 一月
%C 世纪 20(2019 年)
%c 日期和时间 - 缩写 周四 六月 27 08:44:18 2019
%D 采用 mm/dd/yy 格式的日期 06/27/19
%d 月中的某一天 - 2 位数字 05
%e 月份中的某一天 - 如果只有一位数,则前面有一个空格 <空格>5
%F 采用 YYYY-mm-dd 格式的日期,等于 %Y-%m-%d (ISO 8601 日期格式) 2019-06-27
%G ISO 周日期年 (包含一周的星期四)
%g 与“G”相同 - 2 位数字
%H 采用 24 小时格式的小时 17
%h 与“b”相同
%I 12 小时格式的小时 05
%j 一年中的某一天 1-366
%k 与“H”相同
%l 与大写 I) (“I”相同 05
%M 分钟数 35
%m 月份 06
%n 换行符
%p 上午或下午
%R 时间(以 24 小时格式表示 )-无秒 17:45
%r 12 小时格式的时间 09:15:36 AM
%S 05
%s 自 1970 年 1 月 1 日 00:00:00 (UTC) 1150451174
%t 水平制表符
%T 24 小时格式的时间 17:45:52
%U 与“W”相同
%u 在 PowerShell 7.2) 中更改了一周 (1-7) (的数值日期 星期一 = 1,星期日 = 7
%V 一年中的一周 01-53
%w 一周中的数字日期 (0-6) 星期日 = 0,星期六 = 6
%W 一年中的一周 00-52
%X 与“T”相同
%x 区域设置的标准格式的日期 06/27/19(英语-美国)
%Y 采用 4 位格式的年份 2019
%y 采用 2 位格式的年份 19
%Z 与世界时坐标 (UTC) 的时区偏移量 -07

注意

-UFormat %s的行为已更改,以修复 Windows PowerShell 中的行为问题。

  • 返回值基于 UTC 时间。
  • 该值是 (无小数部分) 的秒数值。