2013年2月8日金曜日

◆全角の日付を計算する

全角の日付に対して演算をするには日付型に変換してから計算し、元に戻してあげる。(そのまま計算する方法なんてあるのだろうか・・・、きっとローカルだから無いような・・・)

ちょっとべたな感じいっぱいだが、とりあえずこんな感じでいけそう。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019

function Add-KnajiDate($date,$days)  
{ 
 
[char[]]$zen2han = "0","1","2","3","4","5","6","7","8","9"
  $targetDay = $date
  $targetDay =
 
   
-join ([char[]]$targetDay |
 
   
%{if($zen2han.IndexOf($_) -ge 0){$zen2han.IndexOf($_)}else{$_
}})

 
$culture =
 
   
New-Object System.Globalization.CultureInfo -argumentlist "ja-JP",$true
  $culture.DateTimeFormat.Calendar =
 
   
New-Object System.Globalization.JapaneseCalendar
  $parsedTargetDay =
 
   
[DateTime]::ParseExact($targetDay, "ggyy年M月d日",$culture
)
 
-join([string[]][char[]]$parsedTargetDay.AddDays($days).
ToString(
   
"gyy年M月d日",$culture) | %{if($_ -match '\d'){$zen2han[$_]}else{$_
}})
}


Add-KnajiDate "平成24年2月8日" 3

image

0 件のコメント:

コメントを投稿