[Powershell] 日付計算とか日付に関するあれこれ
いきなり仕事でPowerShellいじってと言われてちょっと困惑、
こちらのサイトを参考にさせていただいたんですが、
PowerShell/Get-Dateで前日、翌日、前月、翌月などの日付を取得する方法
PowerShelだと日付型のオブジェクトに対して、
addDays
addMonths
addYears
といったプロパティが利用できるようです。
以下のようにすると、面倒くさい日付計算なしに、
1ヶ月前の日付を取得することが可能です。
これはすごく便利ですね。
で、問題はここからで、
こーいう風に変数に入れたくなるじゃないですか。
そしたらこういう風に表示されますよね。
で、今のままだと$lastmonthはdate型だから、文字列型…stringにしたいと思うじゃないですか。
それでこうしてみたんです。
!?
いや、アメリカ式表記にしなくていいから!
そこで思い返りました。
俺が欲しいのって、yyyymmdd形式の8桁の情報だよな…と言うことは
こうすれば…
プログラム触れてちょっと嬉しいTearTheSkyです。
久しぶり過ぎて忘れまくっているんですが…
どのプログラムでも必要になる、日付計算
まずPowerShellで日付を取得するのはget-dateコマンドです。
PS C:\Users\TearTheSky> Get-Date 2013年3月31日 11:41:11
こちらのサイトを参考にさせていただいたんですが、
PowerShell/Get-Dateで前日、翌日、前月、翌月などの日付を取得する方法
PowerShelだと日付型のオブジェクトに対して、
addDays
addMonths
addYears
といったプロパティが利用できるようです。
以下のようにすると、面倒くさい日付計算なしに、
1ヶ月前の日付を取得することが可能です。
PS C:\Users\TearTheSky> (Get-Date).addMonths(-1) 2013年2月28日 12:10:32
これはすごく便利ですね。
で、問題はここからで、
こーいう風に変数に入れたくなるじゃないですか。
PS C:\Users\TearTheSky> $lastmonth = (Get-Date).addMonths(-1)
そしたらこういう風に表示されますよね。
PS C:\Users\TearTheSky> $lastmonth 2013年2月28日 21:05:21
で、今のままだと$lastmonthはdate型だから、文字列型…stringにしたいと思うじゃないですか。
それでこうしてみたんです。
PS C:\Users\TearTheSky> [string]$lastmonth = (Get-Date).addMonths(-1) PS C:\Users\TearTheSky> $lastmonth 02/28/2013 21:05:46 PS C:\Users\TearTheSky>
!?
いや、アメリカ式表記にしなくていいから!
そこで思い返りました。
俺が欲しいのって、yyyymmdd形式の8桁の情報だよな…と言うことは
こうすれば…
PS C:\Users\TearTheSky> $lastmonth = (Get-Date -format "yyyyMMdd").addMonths(-1) [System.String] に 'addMonths' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。 発生場所 行:1 文字:53 + $lastmonth = (Get-Date -format "yyyyMMdd").addMonths <<<< (-1) + CategoryInfo : InvalidOperation: (addMonths:String) []、RuntimeException + FullyQualifiedErrorId : MethodNotFound
!?
まじかよ…
PS C:\Users\TearTheSky> (Get-Date -format "yyyyMMdd").gettype().fullname System.String
-format スイッチを使うと、戻り値は文字列型になっちゃいます!
めんどくせえ…('A`)
ということで、結局こうしました。
ということで、結局こうしました。
PS C:\Users\TearTheSky> $lastmonth = (Get-Date).addMonths(-1) PS C:\Users\TearTheSky> [string]$lastmonth = (Get-Date).addMonths(-1) PS C:\Users\TearTheSky> $lastmonth = $lastmonth.substring(6,4) + $lastmonth.substring(0,2) + $lastmonth.substring(3,2) PS C:\Users\TearTheSky> $lastmonth 20130228
やったね☆(ゝω・)v
(Get-Date).addMonths(-1).ToString("yyyyMMdd")
返信削除おお!ありがとうございます!またよろしくお願いします!
返信削除