閱讀英文

共用方式為


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>]

Description

Get-Date Cmdlet 會取得 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 TimeDateTime自變數。

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位移來轉換時間。 Notes 區段中的表格會列出有效的 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 使用 Format 參數搭配小寫 o 的格式規範來建立時間戳 String 物件。 物件會從管線向下傳送至 ForEach-ObjectScriptBlock 包含代表目前管線物件的 $_ 變數。 時間戳字串是以句號取代的冒號分隔。

New-Item 會使用 Path 參數來指定新目錄的位置。 路徑包含 $timestamp 變數作為目錄名稱。 Type 參數會指定建立目錄。

範例 9:轉換 Unix 時間戳

本範例會將 Unix 時間 (以 1970-01-01 01 0:00:00 起的秒數表示) 轉換為 DateTime。

Get-Date -UnixTimeSeconds 1577836800

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

範例 10:傳回解譯為 UTC 的日期值

此範例示範如何將日期值解譯為其 UTC 對等專案。 在這裡範例中,此電腦會設定為 Pacific Standard Time。 根據預設,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 中引進的。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Date

指定日期和時間。 時間是選擇性的,如果未指定,則會傳回 00:00:00。 以目前選取的地區設定標準格式輸入日期和時間。 您可以使用 Set-Culture Cmdlet 來變更目前的地區設定。

例如,在美國英文中:

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

決定顯示日期和時間的專案。

接受的值如下所示:

  • 日期:只顯示日期
  • 時間:只顯示時間
  • 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 作為時間分隔符、2 位數小時、2 位數分鐘、2 位數秒和 4 位數毫秒)。 例如:20190627T0840107271。

  • FileDateTimeUniversal。 以 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%YNotes 區段包含有效 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

您可以使用管線將 DateTime 物件傳送至此 Cmdlet。

輸出

DateTime

根據預設,此 Cmdlet 會傳回 DateTime 物件。

DateTime 物件向下傳送至需要字元串輸入 Add-Content 這類 Cmdlet 時,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 一周中的一天 - 縮寫名稱 星期一
%B 月份名稱 - 完整 一月
%b 月份名稱 - 縮寫 1 月
%C 世紀 2019年20
%c 日期和時間 - 縮寫 週四 Jun 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 AM 或 PM
%R 以 24 小時格式 -no 秒的時間 17:45
%r 12 小時格式的時間 上午 09:15:36
%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 中變更) Monday = 1,星期日 = 7
%V 一年中的一周 01-53
%w 周中的數值日 (0-6) 星期日 = 0,星期六 = 6
%W 一年中的一周 00-52
%X 與 『T』 相同
%x 地區設定的標準格式日期 06/27/19 for English-US
%Y 4 位數格式的年份 2019
%y 2 位數格式的年份 19
%Z 通用時間座標的時區位移(UTC) -07

注意

-UFormat %s 的行為已變更,以修正 Windows PowerShell 中的行為問題。

  • 傳回值是以UTC時間為基礎。
  • 此值是整數秒值(無小數部分)。