💬
PowerShellで日付操作をする
現在の日付を取得する
Get-Date
#実行結果
DisplayHint : DateTime
Date : 2023/01/11 0:00:00
Day : 11
DayOfWeek : Wednesday
DayOfYear : 11
Hour : 22
Kind : Local
Millisecond : 974
Microsecond : 209
Nanosecond : 900
Minute : 33
Month : 1
Second : 58
Ticks : 638090732389742099
TimeOfDay : 22:33:58.9742099
Year : 2023
DateTime : 2023年1月11日 22:33:58
タイムゾーンを取得する
Get-TimeZone
#実行結果
Id : Tokyo Standard Time
HasIanaId : False
DisplayName : (UTC+09:00) 大阪、札幌、東京
StandardName : 東京 (標準時)
DaylightName : 東京 (夏時間)
BaseUtcOffset : 09:00:00
SupportsDaylightSavingTime : False
文字列から日付型に変換する
[DateTime]::ParseExact("10-31-21 12:25:49","MM-dd-yy HH:mm:ss", $null);
2021年10月31日 12:25:49
日付型から文字列型に変換する
(Get-Date -Format "MM/dd/yy").ToString()
01/13/23
表示する日付の形式を変換する
Get-Date -Date "2016-03-31 20:40:51" -Format "yyyy/MM/dd HH:mm:ss"
2016/03/31 20:40:51
うるう年か判定する
[datetime]::IsLeapYear(2000)
True
番外編
年度を取得する
Function Get-Nendo([datetime]$evalDate = (Get-Date)) {
[UInt32]$Year = $evalDate.Year
[UInt32]$Month = $evalDate.Month
if ($Month -lt 4) { return [UInt32]($Year - 1) } else { return [UInt32]($Year) }
}
日付型⇔エクセルのシリアル値
function ConvertTo-XlsxDateSerial ([datetime]$Date=(Get-Date)){
[datetime]$stdDate=(Get-Date -Year 1900 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0).AddDays(-2)
return [uint32]($Date - $stdDate).Days
}
function ConvertFrom-XlsxDateSerial ([parameter(mandatory=$true)][uint32]$serial){
[datetime]$stdDate=(Get-Date -Year 1900 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0).AddDays(-2)
return [datetime]$stdDate.AddDays($serial)
}
#ConvertTo-XlsxDateSerial Get-Date => 44939
#ConvertFrom-XlsxDateSerial 44939 => 2023年1月13日 0:00:00
Discussion