ここでは、明日や昨日を表すDateTimeオブジェクトを取得する方法を紹介します。その他に、年の初めの日(元日)と終わりの日(大晦日)、月の初めの日と終わりの日、週の初めの日と終わりの日を取得する方法も紹介します。
なおここでは、今日の日付をDateTime.Todayで取得して、その日からみた明日や昨日を取得しています。別の日を基準にして明日や昨日を取得したい時は、その部分を変更してください。
DateTimeに関する知識がない方は、「指定した日時のDateTimeオブジェクトを作成する」と「日時(DateTimeオブジェクト)の情報を取得する」をご覧ください。また、日時の計算については「日時、時間の計算をする」をご覧ください。さらに、現在の日時を取得する方法については「現在の日時を取得する」で説明しています。
明日の日付をDateTimeで取得するには、現在のDateTimeに1日足します。昨日の日付を取得するには、現在のDateTimeから1日引きます。
以下の例では、明日と昨日の他に、明後日、明明後日、一昨日、一昨昨日も取得しています。
'今日 Dim dtToday As DateTime = DateTime.Today '明日 Dim dtTomorrow As DateTime = dtToday.AddDays(1) '明後日 Dim dtDAT As DateTime = dtToday.AddDays(2) '明明後日 Dim dt3DL As DateTime = dtToday.AddDays(3) '昨日 Dim dtYesterday As DateTime = dtToday.AddDays(-1) '一昨日 Dim dtDBY As DateTime = dtToday.AddDays(-2) '一昨昨日 Dim dt3DA As DateTime = dtToday.AddDays(-3)
//今日 DateTime dtToday = DateTime.Today; //明日 DateTime dtTomorrow = dtToday.AddDays(1); //明後日 DateTime dtDAT = dtToday.AddDays(2); //明明後日 DateTime dt3DL = dtToday.AddDays(3); //昨日 DateTime dtYesterday = dtToday.AddDays(-1); //一昨日 DateTime dtDBY = dtToday.AddDays(-2); //一昨昨日 DateTime dt3DA = dtToday.AddDays(-3);
今年の元日を取得する時は、現在の日時を表すDateTimeオブジェクトからYearプロパティで年を取得し、その年の1月1日を表すDateTimeオブジェクトを新たに作成します。
大晦日の場合も同様に12月31日として構いませんが、大晦日の日にちが分からない(グレゴリオ暦以外の暦を使用するなどで)のであれば、来年の1月1日から1日引く方法もあります。
Dim dtToday As DateTime = DateTime.Today '今年の元日(1月1日) Dim dtNewYearsDay As New DateTime(dtToday.Year, 1, 1) '今年の大晦日(12月31日) Dim dtNewYearsEve As New DateTime(dtToday.Year, 12, 31) 'または、来年の元日から1日引く Dim dtNewYearsEve2 As DateTime = New DateTime(dtToday.Year + 1, 1, 1).AddDays(-1)
DateTime dtToday = DateTime.Today; //今年の元日(1月1日) DateTime dtNewYearsDay = new DateTime(dtToday.Year, 1, 1); //今年の大晦日(12月31日) DateTime dtNewYearsEve = new DateTime(dtToday.Year, 12, 31); //または、来年の元日から1日引く DateTime dtNewYearsEve2 = new DateTime(dtToday.Year + 1, 1, 1).AddDays(-1);
指定した月が何日あるかは、DateTime.DaysInMonthメソッドで取得できます。これを使って今月の最後の日を取得することができます。または、来月の最初の日から1日引く方法もあります。
Dim dtToday As DateTime = DateTime.Today '今月の最初の日 Dim dtFDM As New DateTime(dtToday.Year, dtToday.Month, 1) '今月の最後の日 Dim dtLDM As New DateTime(dtToday.Year, dtToday.Month, _ DateTime.DaysInMonth(dtToday.Year, dtToday.Month)) 'または、来月の初めの日から1日引く Dim dtLDM2 As DateTime = _ New DateTime(dtToday.Year, dtToday.Month, 1).AddMonths(1).AddDays(-1)
DateTime dtToday = DateTime.Today; //今月の最初の日 DateTime dtFDM = new DateTime(dtToday.Year, dtToday.Month, 1); //今月の最後の日 DateTime dtLDM = new DateTime(dtToday.Year, dtToday.Month, DateTime.DaysInMonth(dtToday.Year, dtToday.Month)); //または、来月の初めの日から1日引く DateTime dtLDM2 = new DateTime(dtToday.Year, dtToday.Month, 1).AddMonths(1).AddDays(-1);
指定した日が何曜日かは、DateTime.DayOfWeekプロパティで取得できるDayOfWeek列挙体の値で知ることができます。DayOfWeek列挙体の値を整数にキャストすると、DayOfWeek.Sundayが0、DayOfWeek.Saturdayが6になりますので、これを利用して今週の最初の日と最後の日を計算できます。
Dim dtToday As DateTime = DateTime.Today '1週間が日曜日から始まり、土曜日で終わる時 '今週の最初の日 Dim dtLastSunday As DateTime = dtToday.AddDays(0 - CInt(dtToday.DayOfWeek)) '今週の最後の日 Dim dtNextSaturday As DateTime = dtToday.AddDays(6 - CInt(dtToday.DayOfWeek)) '1週間が月曜日から始まり、日曜日で終わる時 '今週の最初の日 Dim dtLastMonday As DateTime = dtToday.AddDays( _ If(dtToday.DayOfWeek = DayOfWeek.Sunday, -6, 1 - CInt(dtToday.DayOfWeek))) 'または、 Dim dtLastMonday2 As DateTime = dtToday.AddDays( _ (7 - CInt(dtToday.DayOfWeek)) Mod 7 - 6) '今週の最後の日 Dim dtNextSunday As DateTime = dtToday.AddDays( _ If(dtToday.DayOfWeek = DayOfWeek.Sunday, 0, 7 - CInt(dtToday.DayOfWeek))) 'または、 Dim dtNextSunday2 As DateTime = dtToday.AddDays( _ (7 - CInt(dtToday.DayOfWeek)) Mod 7)
DateTime dtToday = DateTime.Today; //1週間が日曜日から始まり、土曜日で終わる時 //今週の最初の日 DateTime dtLastSunday = dtToday.AddDays(0 - (int)dtToday.DayOfWeek); //今週の最後の日 DateTime dtNextSaturday = dtToday.AddDays(6 - (int)dtToday.DayOfWeek); //1週間が月曜日から始まり、日曜日で終わる時 //今週の最初の日 DateTime dtLastMonday = dtToday.AddDays( dtToday.DayOfWeek == DayOfWeek.Sunday ? -6 : 1 - (int)dtToday.DayOfWeek); //または、 DateTime dtLastMonday2 = dtToday.AddDays((7 - (int)dtToday.DayOfWeek) % 7 - 6); //今週の最後の日 DateTime dtNextSunday = dtToday.AddDays( dtToday.DayOfWeek == DayOfWeek.Sunday ? 0 : 7 - (int)dtToday.DayOfWeek); //または、 DateTime dtNextSunday2 = dtToday.AddDays((7 - (int)dtToday.DayOfWeek) % 7);
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。