未来の日時と過去の日時を取得する
未来と過去の日時を取得するには DateTime の下記のメソッドを利用します。
AddYears
AddMonths
AddDays
AddHours
AddMinutes
AddSeconds
AddMilliseconds
引数をプラスにすると未来の日時になり、マイナスにすると過去の日時になります。
using System;
using System.Text;
using System.Windows.Forms;
namespace myapp
{
public partial class Form1 : Form
{
// うるう年の2月29日.
const int Y4 = 2000;
const int M2 = 2;
const int D2 = 29;
const int HH = 0;
const int MM = 12;
const int SS = 34;
const int MS = 567;
DateTime DtmBase;
public Form1()
{
InitializeComponent();
}
private void Form1_Load( object sender, EventArgs e )
{
DtmBase = new DateTime( Y4, M2, D2, HH, MM, SS, MS );
}
// 日付を示す文字列を取得するメソッド.
private bool get_string( ref string str, DateTime dtm )
{
int y4 = dtm.Year;
int m2 = dtm.Month;
int d2 = dtm.Day;
int hh = dtm.Hour;
int mm = dtm.Minute;
int ss = dtm.Second;
int ms = dtm.Millisecond;
str = String.Format( "{0:d4}/{1:d2}/{2:d2}_{3:d2}:{4:d2}:{5:d2}_{6:d3}", y4, m2, d2, hh, mm, ss, ms );
return true;
}
private void button1_Click( object sender, EventArgs e )
{
// 基本の日付(うるう年の2月29日)の文字列を取得する.
String msg0 = "";
get_string( ref msg0, DtmBase );
// 1年後を取得する.
DateTime dtm1 = DtmBase.AddYears( 1 );
String msg1 = "";
get_string( ref msg1, dtm1 );
// 365日後を取得する.
DateTime dtm2 = DtmBase.AddDays( 365 );
String msg2 = "";
get_string( ref msg2, dtm2 );
String msg_all = String.Format( "{0}\r\n{1}\r\n{2}", msg0, msg1, msg2 );
MessageBox.Show( msg_all );
}
private void button2_Click( object sender, EventArgs e )
{
DateTime dtm_dst00 = DtmBase.AddYears( 1 ); // 1年後を取得する.
DateTime dtm_dst01 = DtmBase.AddMonths( 1 ); // 1月後を取得する.
DateTime dtm_dst02 = DtmBase.AddDays( 1 ); // 1日後を取得する.
DateTime dtm_dst03 = DtmBase.AddHours( 1 ); // 1時間後を取得する.
DateTime dtm_dst04 = DtmBase.AddMinutes( 1 ); // 1分後を取得する.
DateTime dtm_dst05 = DtmBase.AddSeconds( 1 ); // 1秒後を取得する.
DateTime dtm_dst06 = DtmBase.AddMilliseconds( 1 ); // 1ミリ秒後を取得する.
DateTime dtm_dst10 = DtmBase.AddYears( -1 ); // 1年前を取得する.
DateTime dtm_dst11 = DtmBase.AddMonths( -1 ); // 1月前を取得する.
DateTime dtm_dst12 = DtmBase.AddDays( -1 ); // 1日前を取得する.
DateTime dtm_dst13 = DtmBase.AddHours( -1 ); // 1時間前を取得する.
DateTime dtm_dst14 = DtmBase.AddMinutes( -1 ); // 1分前を取得する.
DateTime dtm_dst15 = DtmBase.AddSeconds( -1 ); // 1秒前を取得する.
DateTime dtm_dst16 = DtmBase.AddMilliseconds( -1 ); // 1ミリ秒前を取得する.
// ------------------------------------------------
// 基本の日付の文字列を取得する.
String msg_base = "";
get_string( ref msg_base, DtmBase );
// ------------------------------------------------
// 未来の日付の文字列を取得する.
String msg00 = "";
String msg01 = "";
String msg02 = "";
String msg03 = "";
String msg04 = "";
String msg05 = "";
String msg06 = "";
get_string( ref msg00, dtm_dst00 ); // 1年後の文字列を取得する.
get_string( ref msg01, dtm_dst01 ); // 1月後の文字列を取得する.
get_string( ref msg02, dtm_dst02 ); // 1日後の文字列を取得する.
get_string( ref msg03, dtm_dst03 ); // 1時間後の文字列を取得する.
get_string( ref msg04, dtm_dst04 ); // 1分後の文字列を取得する.
get_string( ref msg05, dtm_dst05 ); // 1秒後の文字列を取得する.
get_string( ref msg06, dtm_dst06 ); // 1ミリ秒後の文字列を取得する.
StringBuilder sb0 = new StringBuilder();
sb0.AppendLine( msg00 );
sb0.AppendLine( msg01 );
sb0.AppendLine( msg02 );
sb0.AppendLine( msg03 );
sb0.AppendLine( msg04 );
sb0.AppendLine( msg05 );
sb0.AppendLine( msg06 );
String msg0 = sb0.ToString().Trim();
// ------------------------------------------------
// 過去の日付の文字列を取得する.
String msg10 = "";
String msg11 = "";
String msg12 = "";
String msg13 = "";
String msg14 = "";
String msg15 = "";
String msg16 = "";
get_string( ref msg10, dtm_dst10 ); // 1年前の文字列を取得する.
get_string( ref msg11, dtm_dst11 ); // 1月前の文字列を取得する.
get_string( ref msg12, dtm_dst12 ); // 1日前の文字列を取得する.
get_string( ref msg13, dtm_dst13 ); // 1時間前の文字列を取得する.
get_string( ref msg14, dtm_dst14 ); // 1分前の文字列を取得する.
get_string( ref msg15, dtm_dst15 ); // 1秒前の文字列を取得する.
get_string( ref msg16, dtm_dst16 ); // 1ミリ秒前の文字列を取得する.
StringBuilder sb1 = new StringBuilder();
sb1.AppendLine( msg10 );
sb1.AppendLine( msg11 );
sb1.AppendLine( msg12 );
sb1.AppendLine( msg13 );
sb1.AppendLine( msg14 );
sb1.AppendLine( msg15 );
sb1.AppendLine( msg16 );
String msg1 = sb1.ToString().Trim();
// ------------------------------------------------
// メッセージボックスを表示する.
String msg_all = String.Format( "{0}\r\n\r\n{1}\r\n\r\n{2}", msg_base, msg0, msg1 );
MessageBox.Show( msg_all );
}
}
}