VB.NET で日付や時刻(年・月・日・時・分・秒・ミリ秒)を取得・計算する

DateTime(日時) や TimeSpan(時間)を使用して、日付や時刻の一部を取得したり計算したりします。
VB.NET には、日時を表すものとして DateTime の他に Date というのもありますが、ここでは DateTime を使用します。
この2つにどういう違いがあるのかについてはよくわかりません・・・。

[adsense1]

現在日時を「2013年2月7日12時34分56秒7891234」として話を進めます。

現在の日時を取得する

Dim dtNow As DateTime = DateTime.Now

dtNow = 2013/02/07 12:34:56

日時を文字列に変換して書式を指定する

Dim strDate As String = DateTime.Now.ToString("yyyy年MM月dd日dddd")
Dim strTime As String = DateTime.Now.ToString("HH時mm分ss秒")

strDate = 2013年02月07日木曜日
strTime = 12時34分56秒

他にもいろいろな書式があります。
このページの最後の方にある「カスタム DateTime 書式指定文字列」を参照してください。

8桁の数字を日付型に変換する

Dim intDate As Integer = 20130207
Dim dt As DateTime = DateTime.Parse(Format(intDate, "0000/00/00"))

dt = 2013/02/07 0:00:00

現在日時から[年]を取得する

Dim intYear As Integer = DateTime.Now.Year

intYear = 2013

来年の[年]を取得する

Dim intNextYear As Integer = DateTime.Now.AddYears(1).Year

intNextYear = 2014

去年の[年]を取得する

Dim intLastYear As Integer = DateTime.Now.AddYears(-1).Year

intLastYear = 2012

現在日時から[月]を取得する

Dim intMonth As Integer = DateTime.Now.Month

intMonth = 2

来月の[月]を取得する

Dim intNextMonth As Integer = DateTime.Now.AddMonths(1).Month

intNextMonth = 3

先月の[月]を取得する

Dim intLastMonth As Integer = DateTime.Now.AddMonths(-1).Month

intLastMonth = 1

現在日時から[日]を取得する

Dim intDay As Integer = DateTime.Now.Day

intDay = 7

明日の[日]を取得する

Dim intTomorrow As Integer = DateTime.Now.AddDays(1).Day

intTomorrow = 8

昨日の[日]を取得する

Dim intYesterday As Integer = DateTime.Now.AddDays(-1).Day

intYesterday = 6

現在日時から[曜日]を取得する

Dim strWeek1 As String = DateTime.Now.ToString("ddd")
Dim strWeek2 As String = DateTime.Now.ToString("dddd")

strWeek1 = 木
strWeek2 = 木曜日

現在日時から[時刻]を取得する

Dim tsTime As TimeSpan = DateTime.Now.TimeOfDay

tsTime = 12:34:56.7891234

現在日時から[時]を取得する

Dim intHour As Integer = DateTime.Now.Hour

intHour = 12

現在日時から[分]を取得する

Dim intMinute As Integer = DateTime.Now.Minute

intMinute = 34

現在日時から[秒]を取得する

Dim intSecond As Integer = DateTime.Now.Second

intSecond = 56

現在日時から[ミリ秒]を取得する

Dim intMillisecond As Integer = DateTime.Now.Millisecond

intMillisecond = 789

時間と時間の差を求める

次の例では「13時30分55秒 – 15時40分55秒」の計算をします。
Duration を付けると絶対値(正の値)になります。

Dim ts1 As TimeSpan = TimeSpan.Parse("13:30:55")
Dim ts2 As TimeSpan = TimeSpan.Parse("15:40:55")
Dim tsSa1 As TimeSpan = ts1.Subtract(ts2)
Dim tsSa2 As TimeSpan = ts1.Subtract(ts2).Duration

tsSa1 = -02:10:00
tsSa2 = 02:10:00

時間と時間の和を求める

次の例では「12時30分00秒 + 15時30分00秒」の計算をします。

Dim ts1 As TimeSpan = TimeSpan.Parse("12:30:00")
Dim ts2 As TimeSpan = TimeSpan.Parse("15:30:00")
Dim tsWa1 As Double = ts1.Add(ts2).TotalDays
Dim tsWa2 As Double = ts1.Add(ts2).TotalHours
Dim tsWa3 As Double = ts1.Add(ts2).TotalMinutes
Dim tsWa4 As Double = ts1.Add(ts2).TotalSeconds
Dim tsWa5 As Double = ts1.Add(ts2).TotalMilliseconds

tsWa1 = 1.16666666666667
tsWa2 = 28
tsWa3 = 1680
tsWa4 = 100800
tsWa5 = 100800000

日付・時刻を加算・減算する

'現在日時 + 1年
Dim dt1 As DateTime = DateTime.Now.AddYears(1)
'現在日時 - 1年
Dim dt2 As DateTime = DateTime.Now.AddYears(-1)
'現在日時 + 1月
Dim dt3 As DateTime = DateTime.Now.AddMonths(1)
'現在日時 + 1日
Dim dt4 As DateTime = DateTime.Now.AddDays(1)
'現在日時 + 1時間
Dim dt5 As DateTime = DateTime.Now.AddHours(1)
'現在日時 + 1分
Dim dt6 As DateTime = DateTime.Now.AddMinutes(1)
'現在日時 + 1秒
Dim dt7 As DateTime = DateTime.Now.AddSeconds(1)
'現在日時 + 1ミリ秒
Dim dt8 As DateTime = DateTime.Now.AddMilliseconds(1)
'組み合わせ
Dim dt9 As DateTime = DateTime.Now.AddYears(-3).AddMonths(-5)

カスタム DateTime 書式指定文字列

よく使いそうなものを一覧表にしました。

書式指定子 説明
yyyy 4桁の年 2013
yy 2桁の年 13
MM 先頭0付き2桁の月 01~12
M 先頭0なしの月 1~12
dd 先頭0付き2桁の日 01~31
d 先頭0なしの日 1~31
ddd 曜日の省略名
dddd 曜日の完全名 木曜日
HH 先頭0付き2桁の時間(24時間表記) 00~23
H 先頭0なしの時間(24時間表記) 0~23
hh 先頭0付き2桁の時間(12時間表記) 01~12
h 先頭0なしの時間(12時間表記) 1~12
mm 先頭0付き2桁の分 00~59
m 先頭0なしの分 0~59
ss 先頭0付き2桁の秒 00~59
s 先頭0付き2桁の秒 0~59

カスタム DateTime 書式指定文字列 – msdn ライブラリ
http://msdn.microsoft.com/ja-jp/library/8kb3ddd4(v=vs.80).aspx

[adsense2]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください