2018/03/09 5:29:52 2017
年度を取得する方法
スポンサーリンク
PowerShell では年度を取得する標準メソッドは無い為、年度を計算して取得します。4月が年度の開始月の場合は、3ヶ月前の年を取得すれば年度になります。
4月が年度開始月の場合
年度を取得するサンプルコードは次の通りです。
PowerShell(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 | # 現在日時(DateTime)を取得する。 $now = Get-Date; # 3ヶ月前を計算し、年(=年度)を文字列で取得する。 $nendo = $now.AddMonths(-3).ToString("yyyy"); Write-Host $now; Write-Host $nendo; |
上記の実行例は次の通りです。
以下は、上記の方法を12ヶ月分テストしたサンプルコードです。
PowerShell(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | # 1月から12月の日付を DateTime を取得 $m01 = [DateTime]::ParseExact("20170101","yyyyMMdd", $null); # 1月 $m02 = [DateTime]::ParseExact("20170215","yyyyMMdd", $null); # 2月 $m03 = [DateTime]::ParseExact("20170303","yyyyMMdd", $null); # 3月 $m04 = [DateTime]::ParseExact("20170430","yyyyMMdd", $null); # 4月 $m05 = [DateTime]::ParseExact("20170531","yyyyMMdd", $null); # 5月 $m06 = [DateTime]::ParseExact("20170622","yyyyMMdd", $null); # 6月 $m07 = [DateTime]::ParseExact("20170702","yyyyMMdd", $null); # 7月 $m08 = [DateTime]::ParseExact("20170815","yyyyMMdd", $null); # 8月 $m09 = [DateTime]::ParseExact("20170909","yyyyMMdd", $null); # 9月 $m10 = [DateTime]::ParseExact("20171018","yyyyMMdd", $null); # 10月 $m11 = [DateTime]::ParseExact("20171122","yyyyMMdd", $null); # 11月 $m12 = [DateTime]::ParseExact("20171231","yyyyMMdd", $null); # 12月 # 3ヶ月前を計算し、年を文字列で取得する。 $nendo01 = $m01.AddMonths(-3).ToString("yyyy"); $nendo02 = $m02.AddMonths(-3).ToString("yyyy"); $nendo03 = $m03.AddMonths(-3).ToString("yyyy"); $nendo04 = $m04.AddMonths(-3).ToString("yyyy"); $nendo05 = $m05.AddMonths(-3).ToString("yyyy"); $nendo06 = $m06.AddMonths(-3).ToString("yyyy"); $nendo07 = $m07.AddMonths(-3).ToString("yyyy"); $nendo08 = $m08.AddMonths(-3).ToString("yyyy"); $nendo09 = $m09.AddMonths(-3).ToString("yyyy"); $nendo10 = $m10.AddMonths(-3).ToString("yyyy"); $nendo11 = $m11.AddMonths(-3).ToString("yyyy"); $nendo12 = $m12.AddMonths(-3).ToString("yyyy"); Write-Host $m01; Write-Host $nendo01; Write-Host '------------------' Write-Host $m02; Write-Host $nendo02; Write-Host '------------------' Write-Host $m03; Write-Host $nendo03; Write-Host '------------------' Write-Host $m04; Write-Host $nendo04; Write-Host '------------------' Write-Host $m05; Write-Host $nendo05; Write-Host '------------------' Write-Host $m06; Write-Host $nendo06; Write-Host '------------------' Write-Host $m07; Write-Host $nendo07; Write-Host '------------------' Write-Host $m08; Write-Host $nendo08; Write-Host '------------------' Write-Host $m09; Write-Host $nendo09; Write-Host '------------------' Write-Host $m10; Write-Host $nendo10; Write-Host '------------------' Write-Host $m11; Write-Host $nendo11; Write-Host '------------------' Write-Host $m12; Write-Host $nendo12; |
実行結果は次の通りです。
2017/01/01 0:00:00 2016 ------------------ 2017/02/15 0:00:00 2016 ------------------ 2017/03/03 0:00:00 2016 ------------------ 2017/04/30 0:00:00 2017 ------------------ 2017/05/31 0:00:00 2017 ------------------ 2017/06/22 0:00:00 2017 ------------------ 2017/07/02 0:00:00 2017 ------------------ 2017/08/15 0:00:00 2017 ------------------ 2017/09/09 0:00:00 2017 ------------------ 2017/10/18 0:00:00 2017 ------------------ 2017/11/22 0:00:00 2017 ------------------ 2017/12/31 0:00:00 2017
年度の開始月が N 月の場合
次のサンプルコードの $start に開始月を設定することで年度を取得できます。
PowerShell(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 年度開始月を設定(この例では 6 月が年度開始月) $start = 6; # 何か月戻すべきかを計算 $backTo = ($start-1) * -1; # 現在日時(DateTime)を取得する。 $now = Get-Date; # Nヶ月前を計算し、年を文字列で取得する。 $nendo = $now.AddMonths($backTo ).ToString("yyyy"); Write-Host $now; Write-Host $nendo; |
年度を計算する汎用的な関数
次のサンプルコードの Get-Nendo では第一引数に yyyymm 形式の数値または文字列を与えることで 4 月を開始月とした年度(文字列)を取得できます。開始月を変更したい場合は第二引数に開始月の数値を渡します。
PowerShell(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | function Get-Nendo($yyyymm, $start = 4) { # 何か月戻すべきかを計算する。 $backTo = ($start-1) * -1; # 引数で渡された年月の DateTime を取得する。 $dt = [DateTime]::ParseExact($yyyymm, "yyyyMM", $null); # 年度を計算して返す return $dt.AddMonths($backTo).ToString("yyyy"); } # 以下は関数のテスト結果 # 4月を開始月とした場合 Write-Host (Get-Nendo 201701); # 2016 Write-Host (Get-Nendo 201702); # 2016 Write-Host (Get-Nendo 201703); # 2016 Write-Host (Get-Nendo 201704); # 2017 Write-Host (Get-Nendo 201705); # 2017 Write-Host (Get-Nendo 201706); # 2017 Write-Host (Get-Nendo 201707); # 2017 Write-Host (Get-Nendo 201708); # 2017 Write-Host (Get-Nendo 201709); # 2017 Write-Host (Get-Nendo 201710); # 2017 Write-Host (Get-Nendo 201711); # 2017 Write-Host (Get-Nendo 201712); # 2017 # 6月を開始月とした場合 Write-Host (Get-Nendo 201701 6); # 2016 Write-Host (Get-Nendo 201702 6); # 2016 Write-Host (Get-Nendo 201703 6); # 2016 Write-Host (Get-Nendo 201704 6); # 2016 Write-Host (Get-Nendo 201705 6); # 2016 Write-Host (Get-Nendo 201706 6); # 2017 Write-Host (Get-Nendo 201707 6); # 2017 Write-Host (Get-Nendo 201708 6); # 2017 Write-Host (Get-Nendo 201709 6); # 2017 Write-Host (Get-Nendo 201710 6); # 2017 Write-Host (Get-Nendo 201711 6); # 2017 Write-Host (Get-Nendo 201712 6); # 2017 |
スポンサーリンク
- PowerShell
- セキュア文字列を復号して平文にする
- if で条件分岐する
- バージョンを確認する方法
- ユーザーの入力を受け付けて、入力内容を変数に入れて使用する方法
- yyyymmdd 形式の文字列で現在日付を取得する方法
- 処理を途中で終了する方法
- Excel のファイルを新規作成する方法
- 使用可能なコマンドレット一覧を確認する方法
- 実行ポリシー(ExecutionPolicy)変更時にエラーが出た場合の対応方法
- 実行ポリシー(Execution Policy)を確認・変更する方法
- SQL Server に接続してテーブルの内容を SELECT する方法
- ソースコードの式の途中で改行する方法
- 呼び出し元のバッチに戻り値を返す方法
- v2.0 で使用可能なコマンドレット一覧
- 比較演算子一覧・サンプルコードあり
- 論理演算子一覧・サンプルコードあり
- ループを途中で抜ける方法
- テキストファイルの改行を全て削除する方法
- %{}の意味
- 実行中のスクリプトのファイル名を取得する方法
- 変数に NULL を代入する方法
- 変数の値が NULL かを判定する方法
- クラスを別ファイルに定義して読み込む方法
- FTP でファイルをアップロードする方法
- FTP で指定したディレクトリのファイルの一覧を取得する方法
- 文字列を日時型(DateTime)に変換する方法
- Write-Host 時に改行しない方法・途中で改行する方法
- 年度を取得する方法
- 端数を四捨五入する方法
- 端数を切り捨てる方法
- Excel の RoundDown と同じ方法で端数を切り捨てる方法
- Excel の RoundUp と同じ方法で端数を切り上げる方法
- 実行中に変数の中身を確認する方法
- 2個の日付の差の日数を計算する方法
- コメントの書き方
- 翌月、前月、Nヶ月後、Nヶ月前を取得する方法
- バッチファイル(*.bat)からパワーシェルファイル(*.ps1)を実行する方法
- プログラムを秒・ミリ秒を指定して一時停止する方法
- 一時的に実行ポリシー(Execution Policy)を変更する方法
- ファイル・フォルダ
- 空のファイルやフォルダを新規作成する方法
- ファイルやフォルダが存在するかを確認する方法
- Export-CSV の文字化け対策
- フォルダを削除する方法
- ファイルを削除する方法
- カレントフォルダや一階層上のパスを取得する方法
- ファイルの内容をクリアする方法
- フォルダを中身を含めてコピーする方法
- 親フォルダの絶対パスを取得する方法
- ファイルを移動する方法
- フォルダ内のファイル一覧を取得し、全てのファイルを処理する方法
- ファイルとフォルダのどちらかを判定する方法
- パスの文字列から拡張子やファイル名を取り出す方法
- 配列
- 配列の要素数を確認する方法
- 連想配列(ハッシュ)を使用する
- 連想配列(ハッシュ)のキーの一覧を取得する方法
- 配列内の値を検索する方法
- 配列をソートする(昇順・降順)
- 配列内の重複した値を削除する方法
- 配列の要素の値を連結して一つの文字列にする方法
- 変数が配列かを調べる方法
- 配列に要素を追加する方法
- 空の配列を作成する方法
- for で配列の全ての要素を処理する方法
- foreach で配列の全ての要素を処理する方法
- 空の連想配列(ハッシュ)を作成する方法
- 連想配列(ハッシュ)に指定したキーが含まれるかを確認する方法
- 連想配列(ハッシュ)に指定した値が含まれるかを確認する方法
- foreach で連想配列(ハッシュ)の全ての要素を処理する方法
- 連想配列(ハッシュ)をキーや値で並び替える方法(連想配列のソート)
- 配列に指定した値が含まれるかを確認する方法
- 配列の先頭の要素を削除する方法
- 文字列
- 文字列を検索し最初に一致した場所を取得する方法
- 文字列を検索し最後に一致した場所を取得する方法
- 文字列を区切り文字で分割して配列にする方法
- 文字列の文字数をカウントする方法
- 文字列のバイト数をカウントする方法
- 文字列の中で変数を展開する方法
- 大文字・小文字を区別して文字列の一致を確認する方法
- 英語の大文字・小文字を切り替える方法
- 文字列を置換する方法
- 左側をゼロ埋めして固定長の文字列にする方法
- 文字列が空文字や NULL であるかを判定する方法
- 文字列の右側からN文字取り出す方法
- 文字列の左側からN文字取り出す方法
- 文字列の一部を取り出す方法
- 文字列の両端の全角スペース/半角スペースを削除する
- ヒアドキュメントを使って複数行を 1 つの文字列にする
- 文字列が特定の文字列で始まるかを調べる
- タブや改行を文字列値に含める方法
- バッククオテーション ( ` ) を文字列値に含める方法
- シングルクオテーション ( ' ) を文字列値に含める方法
- ダブルクオテーション ( " ) を文字列値に含める方法