日付を演算 Get-Date

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第11回】日付を演算 Get-Date

[2018/07/05 09:37]後藤大地 ブックマーク ブックマーク

  • サーバ/ストレージ

サーバ/ストレージ

日付オブジェクトのプロパティ

Get-Dateコマンドレットで取得できる日付のオブジェクト(System.DateTime)には、主に次のプロパティが設定されている。

プロパティ名 内容
Date 年月日時分秒など
Day
DayOfWeek 曜日
DayOfYear 1年で何日目か
Hour
Kind UTCやLocalなど
Millisecond ミリ秒
Minute
Month
Second
Ticks 基準日付から100ナノ秒単位での刻み値
TimeOfDay 時分秒など
Year

日付オブジェクトから個々の値を取り出す場合にはこうしたプロパティが利用できる。

日付オブジェクトのプロパティにアクセスした場合のサンプル

PS /Users/daichi> $d = Get-date
PS /Users/daichi> $d.Day
26
PS /Users/daichi> $d.DayOfWeek
Tuesday
PS /Users/daichi> $d.DayOfYear
177
PS /Users/daichi> $d.Hour
15
PS /Users/daichi> $d.Millisecond
966
PS /Users/daichi> $d.Minute
10
PS /Users/daichi> $d.Month
6
PS /Users/daichi> $d.Second
57
PS /Users/daichi> $d.Year
2018
PS /Users/daichi>

Get-Dateコマンドレットで取得できるオブジェクトはSystem.DateTimeという型のオブジェクトだ。PowerShellはシェルスクリプトのように利用できるが、実際にはオブジェクト指向プログラミング言語の機能を備えており、やり取りされているデータはテキストデータではなくオブジェクトになっている。

このあたりは細かく説明してもよくわからなくなってくると思うので、今後いろいろ取りあげる動作例を通じてなんとなく感覚を掴んでいってもらえればと思う。

日付オブジェクトのメソッド

Get-Dateコマンドレットで取得できるオブジェクトはSystem.DateTime型だ。この型には主に次のようなメソッドが用意されている。加算や減算、ほかの型への変換機能などが用意されている。

メソッド 内容
Add timespan値を加算
AddDays 日を加算
AddHours 時を加算
AddMilliseconds ミリ秒を加算
AddMinutes 分を加算
AddMonths 月を加算
AddSeconds 秒を加算
AddTicks チックを加算
AddYears 年を加算
CompareTo 比較
Equals 等価演算
GetDateTimeFormats 指定可能なフォーマット一覧を表示
GetHashCode ハッシュコード取得
GetType 型情報を取得
GetTypeCode タイプコードを取得
IsDaylightSavingTime 夏時間かどうか
Subtract 引き算
ToFileTime ファイルタイム(long)に変更
ToFileTimeUtc ファイルタイム(long, UTC)に変換
ToLocalTime ローカルタイムに変換
ToLongDateString 日付文字列(長い)に変換
ToLongTimeString 時刻文字列(長い)に変換
ToShortDateString 日付文字列(短い)に変換
ToShortTimeString 時刻文字列(短い)に変換
ToString 指定したフォーマットの文字列に変換
ToUniversalTime UTC時間に変換

たとえば、addDays()メソッドを使って日付データを1週間増やすとすれば、次のように操作すればよいことになる。

日付を1週間進める場合の操作例

PS /Users/daichi> $d

Tuesday, 26 June 2018 15:10:57


PS /Users/daichi> $d.addDays(7)

Tuesday, 3 July 2018 15:10:57


PS /Users/daichi>

次に、日付がある一定の期間内にあるかどうかを判断する場合を考える。判断するにあたって先にPowerShell Coreで利用できる論理演算子と比較演算子を知っておく必要があるので、次にまとめておく。

論理演算子 意味
-and 論理積
-or 論理和
-xor 排他的論理和
-not 否定
! 否定
比較演算子 意味
-eq 等価
-ne 等価ではない
-gt 大なり
-ge 大なりイコール
-lt 小なり
-le 小なりイコール
-like ワイルドカードマッチ
-notlike ワイルドカードマッチしない
-match 正規表現マッチ
-notmatch 正規表現マッチしない
-contains コレクションに参照値が含まれている
-notcontains コレクションに参照値が含まれていない
-in コレクションにテスト値が含まれている
-notin コレクションにテスト値が含まれていない
-replace 文字列パターンを置換
-is オブジェクトが同じ型
-isnot オブジェクトが同じ型ではない

JavaやC/C++、Pythonといったプログラミング言語に慣れているなら&&、||、!、<、<=、>、>=などの演算子を知っていると思うが、上記演算子はそれと似たような働きをする。UNIX系コマンドのtestでは上記のようにハイフンからはじまる論理演算子や比較演算子を利用するのだが、それとよく似ている。

こうした機能を使って日付データを比較すると次のようになる。

日付演算の例

PS /Users/daichi> $start=(Get-Date -Format yyyy/MM/dd 2018/01/01)
PS /Users/daichi> $end=(Get-Date -Format yyyy/MM/dd 2018/01/10)
PS /Users/daichi> $a=(Get-Date -Format yyyy/MM/dd 2017/12/30)
PS /Users/daichi> $b=(Get-Date -Format yyyy/MM/dd 2018/01/03)
PS /Users/daichi> $c=(Get-Date -Format yyyy/MM/dd 2018/02/03)
PS /Users/daichi> $start
2018/01/01
PS /Users/daichi> $end
2018/01/10
PS /Users/daichi> $a
2017/12/30
PS /Users/daichi> $b
2018/01/03
PS /Users/daichi> $c
2018/02/03
PS /Users/daichi> ($start -le $a) -and ($a -le $end)
False
PS /Users/daichi> ($start -le $b) -and ($b -le $end)
True
PS /Users/daichi> ($start -le $c) -and ($c -le $end)
False
PS /Users/daichi>

$startと$endの間に収まっている日付データだけがTrueと判断されていることを確認できことがわかる。こんな感じで日付の演算が可能というわけだ。

まだコマンドの使い方に留まっているのでプログラミング的なサンプルは掲載しないが、制御構文を使えばログデータを解析して指定した期間内のログデータだけを取り出すといったこともできるようになる。そのあたりまでできるようになれば入門の範囲では上出来だ。

参考資料

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
3831
2
【連載】PowerShell Core入門 - 基本コマンドの使い方 [11] 日付を演算 Get-Date
Get-Dateコマンドレットで取得できる日付データ(日付オブジェクト)はデータ間で演算することができる。こうした機能を利用することで比較対象となったデータが指定した日時内に含まれてるかどうかといった判断を行うことができる。日付に関する処理は自動化することの多い部分なので、基本的な使い方はマスターしておきたい。
https://news.mynavi.jp/itsearch/2018/06/21/psc/PS_300-250.jpg
Get-Dateコマンドレットで取得できる日付データ(日付オブジェクト)はデータ間で演算することができる。こうした機能を利用することで比較対象となったデータが指定した日時内に含まれてるかどうかといった判断を行うことができる。日付に関する処理は自動化することの多い部分なので、基本的な使い方はマスターしておきたい。

会員登録(無料)

注目の特集/連載
AI人材に必要なもの
DMM.make AKIBAから生まれたスタートアップたち
はじめてのRPA導入
教えてカナコさん! これならわかるAI入門
RPA入門
PowerShell Core入門
Swagger 3.0 入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
クラウドアンケート

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る