こんにちは。チェシャ男です。(-皿-)
今回は、
【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
日付をyyyMMdd形式で取得する方法を知りたかったので参考にさせて頂きました。ありがとうございました。