【Get-Date】PowerShellで現在の日付や時刻を取得する方法とは?フォーマットの変更は?

こんにちは。チェシャ男です。(-皿-)

今回は、

【PowerShell で時刻の取得し表示形式を変更する方法】

についてご紹介します。

今回紹介する ”Get-Date” コマンドレットでは時間や日付を取得することができます。

日付や時間の取得や表示形式の変更はプログラミングスクリプトを書く上でよく使うため知っておくべきコマンドレットだと思います!

システムの時刻・日付を設定するコマンドレットについてはこちら↓をご参考ください。

[blogcard url=”https://cheshire-wara.com/powershell/ps-cmdlets/system-service/set-date/”]

Get-Date で現在の時刻と日付を取得する

日付/時刻を取得するコマンドレットに

Get-Date

というものがあります。

【コマンドレット】

Get-Date

【オプション】

-Date           <日付時刻データ>
-Year            <年>
-Month         <月>
-Day            <日>
-Hour           <時>
-Minute        <分>
-Second       <秒>
-Millisecond  <ミリ秒>
-DisplayHint <表示タイプ>
-Format       <Windows型書式設定>
-UFormat     <UNIX型書式設定>

【入力】

System.DateTime

【出力】

System.DateTime
System.String

【エイリアス】

なし

現在時刻を取得する

現在の日付や時刻を取得してみましょう。

オプションを何もつけない場合は自動的に現在の日付時刻が表示されます。

Get-Date

⇒ 今日の日付   現在の時刻

⇒ ○○ ○○○○○○

実際の実行結果はこちらです。

PS C:\work> #現在時刻を表示
PS C:\work> Get-Date

2016年11月18日 23:42:26

非常にシンプルですね。

ちなみに、”-DisplayHint” オプションを使用することで表示させる情報を「日付」「時刻」「日付&時刻」から指定することができます。指定する際のパラメータは、

【-DisplayHint】

Date       ⇒ 日付
DateTime⇒ 日付&時刻
Time      ⇒ 時刻

となっています。実際の実行結果は下のようになります。

PS C:\work> #日付だけ表示
PS C:\work> Get-Date -DisplayHint Date

2016年11月19日


PS C:\work> #日付と時刻を表示
PS C:\work> Get-Date -DisplayHint DateTime

2016年11月19日 0:02:44


PS C:\work> #時刻を表示 
PS C:\work> Get-Date -DisplayHint Time

0:03:13

年・月・日・時・分・秒からデータを選んで表示する

上にも書いたように Get-Date コマンドレットで取得する日付のデータは「System.DateTime」という型を持っています。

日付や時刻を専門に取り扱うデータ型ということです。

実際にどのようなプロパティを持っているか確認してみましょう。プロパティはGet-Memberで確認します。

※プロパティについては、【「メソッドとプロパティの違い」】をご覧ください。

PS C:\work> Get-Date | Get-Member -MemberType Properties


   TypeName: System.DateTime

Name        MemberType     Definition
----        ----------     ----------
DisplayHint NoteProperty   DisplayHintType DisplayHint=DateTime
Date        Property       datetime Date {get;}
Day         Property       int Day {get;}
DayOfWeek   Property       System.DayOfWeek DayOfWeek {get;}
DayOfYear   Property       int DayOfYear {get;}
Hour        Property       int Hour {get;}
Kind        Property       System.DateTimeKind Kind {get;}
Millisecond Property       int Millisecond {get;}
Minute      Property       int Minute {get;}
Month       Property       int Month {get;}
Second      Property       int Second {get;}
Ticks       Property       long Ticks {get;}
TimeOfDay   Property       timespan TimeOfDay {get;}
Year        Property       int Year {get;}
DateTime    ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Version 1; $this.DisplayHint }) -ieq...

ご覧のように時間日付に関するプロパティをいくつか持っていることが分かります。

この中で時刻や日付から特定のデータを取り出す主なプロパティは、

【日付】

Date          =  日付
Year          =   年
Month        =  月
Day           =  日
DayOfWeek=  曜日
DayOfYear  = 1年で何日目か(積載日)

【時刻】

Hour          =  時
Minute       =  分
Second      =  秒
Millisecond =  100分の1秒

Get-Date から月や日、時間や分を指定して表示させたい場合は以下のように”. (ドット演算子)”で呼び出します。

PS C:\work> #時を取り出す
PS C:\work> (Get-Date).Hour
0

PS C:\work> #月を取り出す
PS C:\work> (Get-Date).Month
11

PS C:\work> #曜日を取り出す
PS C:\work> (Get-Date).DayOfWeek
Monday

他にもプロパティやメソッドがあるので状況に合わせて使い分けてみましょう。

Get-Dateで指定した日付・時刻を表示させる

ここまでは現在の日付や時刻を表示させる方法について解説しました。

しかし、Get-Date コマンドレットは

ある特定の日付や時刻の「System.DateTime」を表示

することができます。

それぞれ、”-Year” ”-Day” ”-Hour” ”-Minute” といったオプションを使用します。

Get-Date -<指定したいオプション> 指定する内容

といった文法です。

例えば、「マヤ暦で世界が破滅する日」と皆が恐れた2015年9月3日を表示させる場合は

PS C:\work> Get-Date -Year 2015 -Month 9 -Day 3 -DisplayHint Date

2015年9月3日

といった具合ですね。

Get-Date の出力フォーマットを変更する

Get-Date コマンドレットでは ”UFormat” および ”-Format” オプションを使用することで表示の書式(フォーマット)をい変更することができます。

それぞれの違いは Windows 形式で指定するか UNIX 形式で指定するかと行くものです。

”-UFormat” オプションで UNIX 形式の書式設定

-UFormat” オプションを使用する場合は UNIX 形式で出力フォーマットを指定します。

代表的な書式指定子は下の表を参考にしてください。

書式 取得する情報
%Y 年(西暦4桁)
%y 年(西暦下2桁)
%m 月(01~12)
%B 月(January~December)
%d 日(01~31)
%H 時(00~23)
%h 時(01~12)
%M 分(00~59)
%S 秒(00~59)
%p 午前/午後

例として、これらの書式指定子で日時を指定するには

yyyy/mm/dd        =>    %Y/%m/%d

yy/mm/dd            =>    %y/%m/%d

yyyy-mm-dd         =>    %Y-%m-%d

hh:mm                 =>    %H:%M

hh:mm:ss AM/PM  =>    %H:%M:%S %p

のような指定方法があります。

実際にオプションでフォーマットを指定してみましょう。

PS C:\work> #年 / 月 / 日
PS C:\work> Get-Date -UFormat "%Y/%m/%d"
2016/11/19

PS C:\work> #年 - 月 - 日
PS C:\work> Get-Date -UFormat "%Y-%m-%d"
2016-11-19

PS C:\work> #午前/午後 時 : 分 : 秒
PS C:\work> Get-Date -UFormat "%p %H:%M:%S"
午前 01:07:30

このように UNIX 形式でフォーマットを指定することができます。

”-Format” オプションで Windows 形式の書式設定

-Format” オプションを使用する場合は Windows 形式で出力フォーマットを指定します。

代表的な書式指定子は下の表を参考にしてください。

書式 取得する情報
yyyy(またはYYYY) 年(西暦4桁)
yy(またはYY) 年(西暦下2桁)
MM 月(01~12)
dd 日(01~31)
HH 時(00~23)
hh 時(01~12)
mm 分(00~59)
ss 秒(00~59)
d 短い形式の日付パターン
D 長い形式の日付パターン
t 短い形式の時刻パターン
T 長い形式の時刻パターン

例として、これらの書式指定子で日時を指定するには

yyyy/mm/dd        =>    yyyy/MM/dd または g

yy/mm/dd            =>    yy/MM/dd

yyyy-mm-dd         =>    yyyy-MM-dd

hh:mm                 =>    hh:mm または t

hh:mm:ss             =>    hh:mm:ss または T

のような指定方法があります。

短い形式の○○長い形式の○○という指定方法が特徴的ですね。

実際にオプションでフォーマットを指定してみましょう。

PS C:\work> # yyyy / mm / dd の短い形式の日時
PS C:\work> Get-Date -Format "yyyy/MM/dd"
2016/11/29
PS C:\work> Get-Date -Format "d"
2016/11/29

PS C:\work> # hh : mm : dd の長い形式の時刻
PS C:\work> Get-Date -Format "hh:mm:ss"
01:58:36
PS C:\work> Get-Date -Format "T"
01:58:41

このように Windows 形式のフォーマット指定が可能です。

日付や時刻の書式指定子は他にも種類があるので、あなたが表示したい内容に合わせて設定してみてください。

まとめ

現在の日付・時刻を取得する場合は

Get-Date

を使用する。

表示内容を指定する場合は

-DisplayHint

UNIX形式で書式指定する場合は

-UFormat

Windows形式で書式指定する場合は

ーFormat

1 COMMENT

宗像大介

日付をyyyMMdd形式で取得する方法を知りたかったので参考にさせて頂きました。ありがとうございました。

返信する

コメントを残す

メールアドレスが公開されることはありません。