一週間前、または、現在の日時からn日後、n日前の日付を取得する
現在の日時から、1週間前、n日前、n日後の日時を取得したいことがあります。
現在の日時からn日前、n日後の日時を求めるコードを紹介します。
UI
下図のUIを作成します。
コード
[Now]ボタンが"button_now_Click"、[1週間前]ボタンが"button_1weekbefore_Click"、[15日後]ボタンが"button_15daysafter_Click"、[明日]ボタンが"button_Tomorrow_Click"、[指定日後]ボタンが"button_adddays_Click"となっています。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CalcDateTime
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button_now_Click(object sender, EventArgs e)
{
DateTime nowdt = DateTime.Now;
textBox1.Text = nowdt.ToString();
}
private void button_1weekbefore_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
dt = dt.AddDays(-7);
textBox1.Text = dt.ToString("yyyy年M月d日");
}
private void button_15daysafter_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
dt = dt.AddDays(15);
textBox1.Text = dt.ToString("yyyy年M月d日");
}
private void button_Tomorrow_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
dt = dt.AddDays(1);
textBox1.Text = dt.ToString("yyyy年M月d日");
}
private void button_adddays_Click(object sender, EventArgs e)
{
int delta = Convert.ToInt32(textBox_delta.Text);
DateTime dt = DateTime.Now;
dt = dt.AddDays(delta);
textBox1.Text = dt.ToString("yyyy年M月d日");
}
}
}
解説
DateTimeクラスの日付に任意の日を加算、減算する場合は、AddDays()メソッドを用います。
button_Tomorrow
DateTime dt = DateTime.Now;
dt = dt.AddDays(1);
上記コードにより現在の日時を取得し、AddDays()メソッドを呼び出し現在の日時から1日を加算し翌日の日時を求めます。
textBox1.Text = dt.ToString("yyyy年M月d日");
計算した日時をテキストボックスに表示します。
button_1weekbefore
DateTime dt= DateTime.Now;
dt= dt.AddDays(-7);
上記コードにより現在の日時を取得し、AddDays()メソッドを呼び出し現在の日時から7日を減算し一週間前の日時を求めます。
textBox1.Text = dt.ToString("yyyy年M月d日");
計算した日時をテキストボックスに表示します。
button_15daysafter
DateTime dt= DateTime.Now;
dt= dt.AddDays(15);
上記コードにより現在の日時を取得し、AddDays()メソッドを呼び出し現在の日時から15日を加算し15日後の日時を求めます。
textBox1.Text = dt.ToString("yyyy年M月d日");
計算した日時をテキストボックスに表示します。
button_adddays
int delta = Convert.ToInt32(textBox_delta.Text);
テキストボックスから加算日数を取得します。
DateTime dt = DateTime.Now;
dt = dt.AddDays(delta);
現在の日時を取得し、AddDays()メソッドを呼び出し入力された数値の日数を加算します。
textBox1.Text = dt.ToString("yyyy年M月d日");
計算した日時をテキストボックスに表示します。
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[Now]ボタンをクリックすると現在の日時が表示されます。
[明日]ボタンをクリックすると明日の日付がテキストボックスに表示されます。
[1週間前]ボタンをクリックするとテキストボックスに1週間前の日付が表示されます。
[15日後]ボタンをクリックするとテキストボックスに15日後の日付がが表示されます。
下部のテキストボックスに数値を入力し[指定日後]ボタンをクリックします。現在の日付から指定した日数を加算した日付がテキストボックスに表示されます。
テキストボックスに負の数値を入力すると過去日を表示します。
補足
AddDays()メソッドでは日数の加算・減賛ができますが、他の要素の演算は以下を用います。
メソッド名 | 意味 |
Add | 数値ではなくTimeSpanを指定して演算する場合に用います。 |
AddYears | 指定した数値の年数を加算、減算します |
AddMonth | 指定した数値の月数を加算、減算します |
AddDays | 指定した数値の日数を加算、減算します |
AddHours | 指定した数値の時間数を加算、減算します |
AddMinitues | 指定した数値の分数を加算、減算します |
AddSeconds | 指定した数値の秒数を加算、減算します |
AddMilliseconds | 指定した数値のミリ秒数を加算、減算します |
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用