【Powershell】時間の足し算
HH24:MM形式で足し算
Excelに実績時間などを記入する際、1:30という風に記入することもあると思います。
powershellでその値を取得して加算したい時があったので残しておきます。
今回やりたいのは例えば残業1:30、 深夜残業1:00と記入していた場合
この日の合計残業時間は2:30のフォーマットで取得したいということです。
powershellはDate型だと足し算してくれるので(+記号で時間が加算できる) ←この時点ですごい!!
例えばExcelのCell(1.1)に1:30 Cell(1,2)に1:00と記入していた場合
#セル1,1の値を取得 残業 #.Textで値を取得 $zangyo = sheet.Cells.Item(1,1).Text #セル1,2の値を取得 深夜残業 $shinyaZangyo = sheet.Cells.Item(1,2).Text #一日の残業の合計 $sumZangyou = $zangyo + $shinyaZangyo
でやろうとすると、
とSystem.TimeSpanに変換できませんでした。とエラーになります。
そこで、素直に加算したい値どうしを[TimeSpan]型に変換します。
#セル1,1の値を取得 残業 #.Textで値を取得 $zangyo = sheet.Cells.Item(1,1).Text #TimeSpan型に変換 $tsZangyo = [TimeSpan]$zangyo #セル1,2の値を取得 深夜残業 $shinyaZangyo = sheet.Cells.Item(1,2).Text #TimeSpan型に変換 $tsShinyaZangyo = [TimeSpan]$shinyaZangyo #一日の残業の合計 [TimeSpan]$tsSumZangyou = $zangyo + $shinyaZangyo
上記のようすると合計値が2:30と取得できます。
TimeSpan型の中身を見てみると
$tsZangyo =
Days : 0
Hours : 1
Minutes : 30
Seconds : 0
Milliseconds : 0
Ticks : 54000000000
TotalDays : 0.0625
TotalHours : 1.5
TotalMinutes : 90
TotalSeconds : 5400
TotalMilliseconds : 5400000
$tsShinyaZangyo =
Days : 0
Hours : 1
Minutes : 00
Seconds : 0
Milliseconds : 0
Ticks : 54000000000
TotalDays : 0.0625
TotalHours : 1.5
TotalMinutes : 90
TotalSeconds : 5400
TotalMilliseconds : 5400000
$tsSumZangyou =
Days : 0
Hours : 2
Minutes : 30
Seconds : 0
Milliseconds : 0
Ticks : 54000000000
TotalDays : 0.0625
TotalHours : 1.5
TotalMinutes : 90
TotalSeconds : 5400
TotalMilliseconds : 5400000
となり時間と分が加算されていることがわかります。
後はこれをDateTime型に変換しなおすなどすれば、Date型で計算しなおすことができるはずです。
あまり需要はないかもれませんね(´・ω・)