【Powershell】日付データをyyyyMMdd形式として変数で扱う

Powershell Powershell

Powrshell上で日付データをyyyyMMdd形式として変数で扱う方法をまとめてみました。
また、日付データの減算、加算方法も試してみました。

広告

日付データをyyyyMMdd形式で扱う

「date」「Get-date」利用時の日付データ形式について

powershell上で「date」「Get-date」などで日付データを取得すると、通常であれば以下のような形式で取得されます。

PS C:\> date
2022年3月28日 10:05:59
PS C:\> get-date
2022年3月28日 10:06:09
PS C:\>

しかし、この形式だと変数として扱いづらい場合があるので、日付情報をyyyyMMdd形式として変数に格納していきます。

「-Format “yyyyMMdd”」をつけて実行

「date」や「Get-date」にオプションとして「-Format “yyyyMMdd”」をつけて実行させることでyyyyMMdd形式の日付データを取得することができます

$get_date = Get-Date -Format "yyyyMMdd"
$get_date

もしくは

$date = date -Format "yyyyMMdd"
$date

実際にオプションをつけて実行してみる

「$get_date」と「$date」にyyyyMMdd形式で日付が格納されていることが確認できます。

PS C:\> $get_date = Get-Date -Format "yyyyMMdd"
PS C:\>
PS C:\> $get_date
20220203
PS C:\>
PS C:\> $date = date -Format "yyyyMMdd"
PS C:\>
PS C:\> $date
20220203
PS C:\>
広告

指定した日付データを取得する

以下のように [Add・・・]メソッドを利用することで指定した日付データを取得することができます。

以下では1週間前の日付情報を取得しています。

PS C:\> $date_lastweek = Get-Date(Get-Date).AddDays(-7) -Format "yyyyMMdd"
PS C:\>
PS C:\> $date_lastweek
20220127
PS C:\>

このほかにも以下のメソッドが用意されています。

PS C:\> $Seconds = Get-Date(Get-Date).AddSeconds(1)       # 1秒後
PS C:\> $Minutes = Get-Date(Get-Date).AddMinutes(1)       # 1分後
PS C:\> $Hours = Get-Date(Get-Date).AddHours(1)           # 1時間前
PS C:\> $Days = Get-Date(Get-Date).AddDays(1)             # 1日前
PS C:\> $Months = Get-Date(Get-Date).AddMonths(1)         # 1か月後
PS C:\> $Years = Get-Date(Get-Date).AddYears(1)           # 1年後
PS C:\>
PS C:\> $Seconds
2022年2月3日 20:43:28
PS C:\> $Minutes
2022年2月3日 20:44:27
PS C:\> $Hours
2022年2月3日 21:43:27
PS C:\> $Days
2022年2月4日 20:43:27
PS C:\> $Months
2022年3月3日 20:43:27
PS C:\> $Years
2023年2月3日 20:43:27
PS C:\>

過去の日付を扱うときの注意点(日付データの減算・加算について)

私も一度やってしまったことがあるのですが、
日付を整数型のように「数字」として扱い、単なる減算のように処理してしまうと想定外の動作となります。

PS C:> $date = Get-Date -Format "yyyyMMdd"
PS C:> $date_lastweek = $date -7
PS C:> $date_lastweek
20220196
PS C:>

1行目の変数「$date」で取得した値には [20220203] が格納されますが、これが「20220203」という数字(=2千22万2百3)として扱われます。

2行目で、「20220203」という数字から7を引くことになるので「2千22万百96」となってしまいます。

なので上記でも記載している通り、過去の日付を取得する場合は [Add・・・]メソッドを利用して日付を取得する必要があります。

コメント

タイトルとURLをコピーしました