次の方法で共有


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を使用して日付または時刻の文字列を生成し、その文字列を他のコマンドレットまたはプログラムに送信できます。

Get-Date では、オペレーティング システムの現在のカルチャ設定を使用して、出力の書式設定方法を決定します。 コンピューターの設定を表示するには、 (Get-Culture).DateTimeFormatを使用します。

例 1: 現在の日付と時刻を取得する

この例では、 Get-Date は現在のシステムの日付と時刻を表示します。 出力は、長い日付形式と長い時間形式です。

Get-Date

Tuesday, June 25, 2019 14:53:32

例 2: 現在の日付と時刻の要素を取得する

この例では、 Get-Date を使用して日付要素または時刻要素を取得する方法を示します。 このパラメーターでは、引数 DateTime、または 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 書式指定子は、次のように定義されています。

指定子 Definition
dddd 曜日 - フル ネーム
MM 月の番号
dd 月の日 - 2 桁
yyyy 4 桁の形式の年
HH:mm 24 時間形式の時刻 - 秒なし
K 世界時座標 (UTC) からのタイム ゾーン オフセット

.NET 書式指定子の詳細については、「 Custom の日付と時刻の書式指定文字列を参照してください。

例 4: UFormat 指定子を使用して日付と時刻を取得する

この例では、出力の形式をカスタマイズするために、いくつかの UFormat 書式指定子を使用します。 出力は String オブジェクトです。

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

Tuesday 06/25/2019 16:19 -07

Get-Date では、 UFormat パラメーターを使用して、複数の書式指定子を指定します。

この例で使用する UFormat 書式指定子は、次のように定義されます。

指定子 Definition
%A 曜日 - フル ネーム
%m 月の番号
%d 月の日 - 2 桁
%Y 4 桁の形式の年
%R 24 時間形式の時刻 - 秒なし
%Z 世界時座標 (UTC) からのタイム ゾーン オフセット

有効な UFormat 書式指定子の一覧については、「 Notes 」セクションを参照してください。

例 5: 年の日付の日を取得する

この例では、プロパティを使用して年の数値の日を取得します。

グレゴリオ暦には、366 日の閏年を除き、365 日があります。 たとえば、2020 年 12 月 31 日は 366 日です。

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

366

Get-Date では、 YearMonth、および Day の 3 つのパラメーターを使用して日付を指定します。 コマンドはかっこで囲まれ、結果は DayofYear プロパティによって評価されます。

例 6: 夏時間に合わせて日付が調整されているかどうかを確認する

この例では、ブール値メソッドを使用して、夏時間で日付が調整されているかどうかを確認します。

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

True

変数 $DSTGet-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-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 に相当するものとして解釈する方法を示します。 この例では、このマシンは 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
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Date

日付と時刻を指定します。 時刻は省略可能で、指定しない場合は 00:00:00 を返します。 現在選択されているロケールの標準形式で日付と時刻を入力します。 現在のロケールは、 Set-Culture コマンドレットを使用して変更できます。

たとえば、米国英語では次のようになります。

Get-Date -Date "6/25/2019 12:30:22" returns Tuesday, June 25, 2019 12:30:22

型:DateTime
Aliases:LastWriteTime
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Day

表示されている月の日にちを指定します。 1 ~ 31 の値を入力します。

指定した値が 1 か月の日数より大きい場合、PowerShell は月に日数を追加します。 たとえば、Get-Date -Month 4 -Day 31では、April 31 ではなく、May 1 が表示されます。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-DisplayHint

表示する日付と時刻の要素を決定します。

許容される値は次のとおりです。

  • 日付: 日付のみを表示します
  • 時間: 時刻のみを表示します
  • DateTime: 日付と時刻を表示します
型:DisplayHintType
指定可能な値:Date, Time, DateTime
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Format

書式指定子で示される Microsoft .NET Framework 形式で日付と時刻を表示します。 Format パラメーターは、String オブジェクトを出力します。

使用可能な .NET 書式指定子の一覧については、「 Custom の日付と時刻の書式指定文字列を参照してください。

Format パラメーターを使用する場合、Get-Dateは日付を表示するために必要なDateTime オブジェクトのプロパティのみを取得します。 その結果、 DateTime オブジェクトのプロパティとメソッドの一部が使用できない場合があります。

PowerShell 5.0 以降では、 Format パラメーターの値として、次の追加形式を使用できます。

  • FileDate。 現在の日付をローカル時刻でファイルまたはパスに対応した表現。 形式は yyyyMMdd です (4 桁の年、2 桁の月、2 桁の日を使用して大文字と小文字が区別されます)。 例: 20190627。

  • FileDateUniversal。 現在の日付を世界時 (UTC) でファイルまたはパスに対応した表現。 形式は yyyyMMddZ です (4 桁の年、2 桁の月、2 桁の日、UTC インジケーターとして文字 Z を使用して、大文字と小文字が区別されます)。 例: 20190627Z。

  • FileDateTime。 現在の日付と時刻を 24 時間形式でローカル時刻でファイルまたはパスに対応した表現。 形式は yyyyMMddTHHmmssffff です (大文字と小文字が区別されます。4 桁の年、2 桁の月、2 桁の日、時刻区切り記号として T 文字、2 桁の時間、2 桁の分、2 桁の秒、4 桁のミリ秒を使用)。 例: 20190627T0840107271。

  • FileDateTimeUniversal。 現在の日付と時刻を 24 時間形式で世界時 (UTC) でファイルまたはパスに対応した表現。 形式は yyyyMMddTHHmmssffffZ (4 桁の年、2 桁の月、2 桁の日、時刻区切り記号として T 文字、2 桁の時間、2 桁の分、2 桁の秒、4 桁のミリ秒、および UTC インジケーターとして文字 Z を使用して大文字と小文字が区別されます)。 例: 20190627T1540500718Z。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Hour

表示する時を指定します。 0 ~ 23 の値を入力します。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Millisecond

日付のミリ秒を指定します。 0 ~ 999 の値を入力します。

このパラメーターは PowerShell 3.0 で導入されました。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Minute

表示する分を指定します。 0 ~ 59 の値を入力します。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Month

表示する月を指定します。 1 ~ 12 の値を入力します。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Second

表示する秒を指定します。 0 ~ 59 の値を入力します。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-UFormat

UNIX 形式で日付と時刻を表示します。 UFormat パラメーターは文字列オブジェクトを出力します。

UFormat指定子の前には、%m%d%Yなど、パーセント記号 (%) が付きます。 Notes セクションには、有効な UFormat 指定子のテーブルが含まれています。

UFormat パラメーターを使用する場合、Get-Dateは日付を表示するために必要なDateTime オブジェクトのプロパティのみを取得します。 その結果、 DateTime オブジェクトのプロパティとメソッドの一部が使用できない場合があります。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-UnixTimeSeconds

1970 年 1 月 1 日 0:00:00 以降の秒数で表される日付と時刻。

このパラメーターは、PowerShell 7.1 で導入されました。

型:Int64
Aliases:UnixTime
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Year

表示する年を指定します。 1 ~ 9999 の値を入力します。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

DateTime

DateTime オブジェクトをこのコマンドレットにパイプできます。

出力

DateTime

既定では、このコマンドレットは DateTime オブジェクトを返します。

DateTimeオブジェクトが、文字列入力を必要とするAdd-Contentなどのコマンドレットにパイプラインに送信されると、PowerShell はオブジェクトを String オブジェクトに変換します。

ToString()は、現在のカルチャ設定を使用して、DateTime オブジェクトを String に変換します。 ただし、PowerShell 式の解釈では、常にインバリアント カルチャ設定が使用されます。 インバリアント カルチャの違いについては、 Example 11 を参照してください。

オブジェクトのプロパティとメソッドを表示するには、パイプラインの下にオブジェクトを送信して Get-Memberします。 たとえば、Get-Date | Get-Member のようにします。

String

Format または UFormat パラメーターを使用すると、このコマンドレットは String オブジェクトを返します。

メモ

DateTime オブジェクトの出力の既定の形式は、現在選択されているロケールの長い日付形式と長い形式です。

有効な UFormat 指定子 を次の表に示します。

重要

UFormat 指定子は、新しいバージョンの PowerShell で変更または追加されます。 たとえば、 %F は PowerShell 6.2 で追加されたため、Windows PowerShell 5.1 以前では使用できません。 複数のバージョンの PowerShell で実行するように設計されたスクリプトで UFormat 指定子を使用する場合は、この点に注意してください。

書式指定子 意味
%A 曜日 - フル ネーム 月曜日
%a 曜日 - 省略名 Mon
%B 月名 - 完全 1 月
%b 月名 - 省略形 1 月
%C センチュリー 2019 年 20
%c 日付と時刻 - 省略形 2019年6月27日(木) 08:44:18
%D mm/dd/yy 形式の日付 06/27/19
%d 月の日 - 2 桁 05
%e 月の日 - 1 桁のみの場合はスペースが前に付く <space>5
%F %Y-%m-%d と等しい YYYY-mm-dd 形式の日付 (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 時間形式の時刻 (秒なし) 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

Note

Windows PowerShell の動作に関する問題を修正するために、 -UFormat %s の動作が変更されました。

  • 戻り値は UTC 時刻に基づきます。
  • 値は秒数の値です (小数部なし)。