2012年12月18日火曜日

[.net]ある日付が第何週かを算出する関数[訂正]

SQL SERVERやExcelであの日付がその年の第何週かを求める式はあるけど、 .netだと該当するものがないので自作してみた。
PRINT DATEPART(week, '2012/12/18')
--51と表示される
 ''日付から年内の第何週かを取得する
 Public Function WeekOfYear(Byval pDateTime As DateTime) Integer
     ''日付から年間積算日を取得
     Dim DayOfYear As Integer = DateTime.Now.DayOfYear '353がセットされる
     Dim WeekNum   As Integer = (DayOfYear / 7 ) + 1

     ''1年は52週なので52週をオーバーしたら1週目にする
     ''→53週でも問題ありません
     ''If WeekNum > 52 Then
     ''    WeekNum = 1
     ''End If

     Return WeekNum
 End Function

 ''使い方

 ''1.算出したい日付をセット
 Dim DateNow   As DateTime = DateTime.Parse("2012/12/18")

 ''2.関数で第何週かを取得
 Console.WriteLine(WeekOfYear(DateNow).ToString())
 ''51と表示される 
 
今年の最終週(12/30・12/31)で計算すると53となるので、53なら1にする調整が必要かも。 
2012/12/20訂正
1/1になると、1週になるので、12/30・31が53週でも問題ありませんでした。

0 件のコメント:

コメントを投稿