BETA

New-TimeSpan コマンドを使ってみた

投稿日:2018-11-27
最終更新:2018-12-07
※この記事は外部サイト(https://qiita.com/syncra/items/87f42cb9984...)からのクロス投稿です

とりあえず、基本

New-TimeSpan -- docs.microsoft.com

ここに、素敵な使用例が書いてあったのです。

おー、これで簡単に、XX日後とかXX時間前とかできるんですね。

これならコマンドやスクリプトに詳しくない人が見ても、
ソースを見てなんとなく何をやっているのか見当つけられそうで親切ですね。

では試してみましょう。

確認環境は Windows Server 2008 R2 の PowerShell Ver.2.0 です。

まずは初心者らしく使用例に忠実に。

あっ ロケールのデフォルトのフォーマットですね。

分かりやすいけど使いにくいという(笑)

使ってみる

では、少しバリエーションを変えて練習です。6か月前とか出したいですね。

指定できるオプションで一番大きい時間の単位は、Days なので(Months とかあるといいのにね)、
おおよそ6か月として -days 180 を指定します。
(変数名は 6 Months という意味で 6m です。)

New-TimeSpan は、マイナスの期間も指定できるので、変数に180日"前"を入れてしまうやり方でも同じ結果が得られます。

スクリプトのソースを他の人が見たときに分かりやすいのは前者かな。

処理の流れや変数の使いかたに合わせて適宜使い分けられたらいいなと思います。

出力フォーマットを変えてみる

そうそう、出力フォーマットが年月日になっているので、これも何とかしたいですね。

get-date だと、-format オプションで簡単に好きなフォーマットで出せるのですが。

(これ、ログファイル名とか定義するときの定番の使い方ですね。)

New-TimeSpan -format yyyyMMdd とかやってもダメでした。
ので、少しググりまして。
ToString を使うのがよさそうです。

ここで、扱いやすくするために、上記の練習で出した6か月前の日時をいったん変数に格納します。



それをこうして こうじゃ



満足☆

いろいろなバリエーションを楽しんでみました。





余談ですが、バッチスクリプト時代は日付の数字を取り出ために、こういう定番の書き方ありましたね…



これをログファイル名などに使うときは、こんな感じで。

set LOGFILE=%LOGDIR%%COMMONNAME%_%~n0_%YYYYMMDD%.log



追記:

教えていただいたことを取り入れつつあれこれ試してみると、Xか月前とかX日後といった値だけ使う場合は、
New-TimeSpan よりも DateTime オブジェクトを使いこなせるようになったほうが、やっぱり良さそう。

例えば、6か月前のファイルを削除するスクリプトはこんな感じで。

$date = Get-Date -format yyyyMMdd  
$dir = "D:\Backup\Log\"  
$log = "DeleteFile_$date.log"  

"開始時間:" + (Get-Date -format G) | Out-File $dir$log -Encoding UTF8  
$delitem = Get-ChildItem $dir -Recurse -include *.log | Where-Object {$_.LastWriteTime -lt (Get-Date).AddMonths(-6)}  
$delitem | Out-File $dir$log -Encoding UTF8 -Append  
if ( $delitem ) { Remove-Item -force $delitem } else { echo "対象ファイルはありません" | Out-File $dir$log -Encoding UTF8 -Append }  
"終了時間:" + (Get-Date -format G) | Out-File $dir$log -Encoding UTF8 -Append  



きっと New-TimeSpan には、もっと適した使い道があるはず。


Hey, Scripting Guy! シリーズの日付時刻関連の記事をログにまとめました。(あとで読む)

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

覚えたことを書いておく

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!