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>]
说明
Get-Date
可获取表示当前日期或指定日期的 DateTime 对象。 Get-Date
可以将日期和时间设置为多种 .NET 和 UNIX 格式。 可以使用 Get-Date
生成日期或时间字符串,然后将该字符串发送到其他 cmdlet 或程序。
Get-Date
使用操作系统的当前区域性设置来确定输出的格式。 若要查看计算机的设置,请使用 (Get-Culture).DateTimeFormat
。
示例
示例 1:获取当前日期和时间
在此示例中,Get-Date
显示当前系统日期和时间。 输出采用长日期和长时间格式。
Get-Date
Tuesday, June 25, 2019 14:53:32
示例 2:获取当前日期和时间的元素
此示例演示如何使用 Get-Date
获取日期或时间元素。 该参数使用自变量 Date、Time 或 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 格式说明符的列表,请参阅“注释”部分。
示例 5:获取一年中的日期
在此示例中,属性用于获取一年中的数字日期。
公历有 365 天,闰年有 366 天。 例如,2020 年 12 月 31 日是第 366 天。
(Get-Date -Year 2020 -Month 12 -Day 31).DayOfYear
366
Get-Date
使用三个参数来指定日期:Year、Month 和 Day。 该命令用括号括起来,以便通过 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
变量用于存储当前系统日期和时间。 $Time
ToUniversalTime()
使用该方法根据计算机的 UTC 偏移量转换时间。
示例 8:创建时间戳
在此示例中,格式说明符为目录名称创建时间戳 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-Date
命令的结果。 Get-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 对象转换为字符串。
但是,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 中引入了此参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Date
指定日期和时间。 时间是可选的,如果未指定,则返回 00:00:00。 以当前所选区域设置的标准格式输入日期和时间。 可以使用 cmdlet 更改当前区域设置 Set-Culture
。
例如,在“美国(英语)”中:
Get-Date -Date "6/25/2019 12:30:22"
返回星期二, 2019 年 6 月 25 日 12:30:22
类型: | DateTime |
别名: | LastWriteTime |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Day
指定显示月份中的某一天。 输入一个介于 1 到 31 之间的值。
如果指定的值大于一个月内的天数,则 PowerShell 会将天数添加到该月份。 例如,Get-Date -Month 4 -Day 31
显示 5 月 1 日,而不是 4 月 31 日。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DisplayHint
确定要显示日期和时间的哪些元素。
接受的值如下所示:
- Date:仅显示日期
- Time:仅显示时间
- DateTime:显示日期和时间
类型: | DisplayHintType |
接受的值: | Date, Time, DateTime |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | 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
作为 UTC 指示符、2 位数小时、2 位数分钟、2 位数秒和 4 位数毫秒)。 例如:20190627T0840107271。FileDateTimeUniversal。 协调世界时 (UTC) 中当前日期和时间的文件或路径友好表示形式(采用 24 小时格式)。 格式为
yyyyMMddTHHmmssffffZ
(区分大小写,使用 4 位数年份、2 位数月份、2 位数日期和字母T
作为时间分隔符、2 位数小时、2 位数分钟、2 位数秒、4 位数毫秒和字母Z
作为 UTC 指示符)。 例如:20190627T1540500718Z。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Hour
指定要显示的小时。 输入一个介于 0 到 23 之间的值。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Millisecond
指定日期中的毫秒。 输入一个介于 0 到 999 之间的值。
此参数是在 PowerShell 3.0 中引入的。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Minute
指定要显示的分钟。 输入一个介于 0 到 59 之间的值。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Month
指定要显示的月份。 输入一个介于 1 到 12 之间的值。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Second
指定要显示的秒。 输入一个介于 0 到 59 之间的值。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-UFormat
采用 UNIX 格式显示日期和时间。 UFormat 参数输出字符串对象。
UFormat 说明符前面有百分号 (%
),例如 %m
、%d
和 %Y
。 “注释”部分包含一个有效的 UFormat 说明符表。
使用 UFormat 参数时,Get-Date
仅获取显示日期所需的 DateTime 对象的属性。 因此,DateTime 对象的某些属性和方法可能不可用。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-UnixTimeSeconds
日期和时间,以自 1970 年 1 月 1 日 0:00:00 以来的秒数表示。
在 PowerShell 7.1 中引入了此参数。
类型: | Int64 |
别名: | UnixTime |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-Year
指定要显示的年份。 输入一个介于 1 到 9999 之间的值。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以将 DateTime 对象通过管道传递给此 cmdlet。
输出
默认情况下,此 cmdlet 会返回一个 DateTime 对象。
当 DateTime 对象通过管道向下发送到需要字符串输入的 cmdlet(例如 Add-Content
)时,PowerShell 会将对象转换为 String 对象。
使用 ToString()
当前区域性设置将 DateTime 对象转换为 字符串 。
但是,PowerShell 表达式解释始终使用固定区域性设置。 若要查看固定区域性的不同程度,请参阅 示例 11。
若要显示对象的属性和方法,请通过管道将对象向下发送到 Get-Member
。
例如 Get-Date | Get-Member
。
当使用 Format 或 UFormat 参数时,此 cmdlet 将返回 String 对象。
备注
DateTime 对象的输出的默认格式是当前所选区域设置的长日期和时间格式。
下表显示了有效的 UFormat 说明符:
重要
可在较新版本的 PowerShell 中更改或添加 UFormat 说明符。 例如,%F
已添加到 PowerShell 6.2 中,因此它不适用于 Windows PowerShell 5.1 或更高版本。 在设计为在多个版本的 PowerShell 上运行的脚本中使用 UFormat 说明符时,请记住这一点。
格式说明符 | 含义 | 示例 |
---|---|---|
%A |
星期几 - 完整名称 | 星期一 |
%a |
星期几 - 缩写名称 | Mon |
%B |
月份名称 - 完整 | 1 月 |
%b |
月份名称 - 缩写 | 一月 |
%C |
世纪 | 20,对应 2019 |
%c |
日期和时间 - 缩写 | 2019 年 6 月 27 日星期四 08:44:18 |
%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 |
一周中的数值日期 (1-7)(已在 PowerShell 7.2 中更改) | 星期一 = 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 时间。
- 该值是一个整数秒值(无小数部分)。