年、月、日、時、分、秒 の数値の要素からDateTimeオブジェクトを作成する - C#

年、月、日、時、分、秒を表す数値からDateTimeオブジェクトを作成したいことがあります。この記事では日時の要素を表す数値からDateTimeオブジェクトを作成するコードを紹介します。

概要

年、月、日、時、分、秒からDateTimeオブジェクトを作成する場合は、DateTimeのコンストラクタに引数を与えると作成できます。

プログラム例

UI

下図のUIを作成します。
日時の各要素を入力するテキストボックスと、ボタンを3つ配置します。

コード

以下のコードを記述します。
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 CreateDateTime
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void FormMain_Load(object sender, EventArgs e)
    {
      DateTime dt = DateTime.Now;
      textBox_Year.Text = Convert.ToString(dt.Year);
      textBox_Month.Text = Convert.ToString(dt.Month);
      textBox_Day.Text = Convert.ToString(dt.Day);
      textBox_Hour.Text = Convert.ToString(dt.Hour);
      textBox_Min.Text = Convert.ToString(dt.Minute);
      textBox_Sec.Text = Convert.ToString(dt.Second);
      textBox_Msec.Text = Convert.ToString(dt.Millisecond);
    }

    private void button_Date_Click(object sender, EventArgs e)
    {
      int year = Convert.ToInt32(textBox_Year.Text);
      int month = Convert.ToInt32(textBox_Month.Text);
      int day = Convert.ToInt32(textBox_Day.Text);

      DateTime dt = new DateTime(year, month, day);
      textBox_Output.Text += dt.ToString("yyyy/MM/dd") + "\r\n";
      textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss") + "\r\n";
    }

    private void button_DateTime_Click(object sender, EventArgs e)
    {
      int year = Convert.ToInt32(textBox_Year.Text);
      int month = Convert.ToInt32(textBox_Month.Text);
      int day = Convert.ToInt32(textBox_Day.Text);
      int hour = Convert.ToInt32(textBox_Hour.Text);
      int min = Convert.ToInt32(textBox_Min.Text);
      int sec = Convert.ToInt32(textBox_Sec.Text);

      DateTime dt = new DateTime(year, month, day, hour, min, sec);
      textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss") + "\r\n";
      textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss.FFFF") + "\r\n";
    }

    private void button_All_Click(object sender, EventArgs e)
    {
      int year = Convert.ToInt32(textBox_Year.Text);
      int month = Convert.ToInt32(textBox_Month.Text);
      int day = Convert.ToInt32(textBox_Day.Text);
      int hour = Convert.ToInt32(textBox_Hour.Text);
      int min = Convert.ToInt32(textBox_Min.Text);
      int sec = Convert.ToInt32(textBox_Sec.Text);
      int msec = Convert.ToInt32(textBox_Msec.Text);

      DateTime dt = new DateTime(year, month, day, hour, min, sec,msec);
      textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss.ffff") + "\r\n";
    }
  }
}

解説

起動時

起動時には、日時の値を入力するテキストボックスに現在の日時の値を設定します。
private void FormMain_Load(object sender, EventArgs e)
{
  DateTime dt = DateTime.Now;
  textBox_Year.Text = Convert.ToString(dt.Year);
  textBox_Month.Text = Convert.ToString(dt.Month);
  textBox_Day.Text = Convert.ToString(dt.Day);
  textBox_Hour.Text = Convert.ToString(dt.Hour);
  textBox_Min.Text = Convert.ToString(dt.Minute);
  textBox_Sec.Text = Convert.ToString(dt.Second);
  textBox_Msec.Text = Convert.ToString(dt.Millisecond);
}

[年月日]ボタン

[年月日]ボタンがクリックされ場合は、年月日の要素のみをDateTimeのコンストラクタに与えます。得られるDateTimeオブジェクトは指定した年月日の"00:00:00"になります。
private void button_Date_Click(object sender, EventArgs e)
{
  int year = Convert.ToInt32(textBox_Year.Text);
  int month = Convert.ToInt32(textBox_Month.Text);
  int day = Convert.ToInt32(textBox_Day.Text);

  DateTime dt = new DateTime(year, month, day);
  textBox_Output.Text += dt.ToString("yyyy/MM/dd") + "\r\n";
  textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss") + "\r\n";
}

[年月日時分秒]ボタン

[年月日時分秒]ボタンがクリックされ場合は、年月日と時分秒の要素をDateTimeのコンストラクタに与えます。得られるDateTimeオブジェクトは指定した日時になります。ミリ秒以下の値は0になります。
private void button_DateTime_Click(object sender, EventArgs e)
{
  int year = Convert.ToInt32(textBox_Year.Text);
  int month = Convert.ToInt32(textBox_Month.Text);
  int day = Convert.ToInt32(textBox_Day.Text);
  int hour = Convert.ToInt32(textBox_Hour.Text);
  int min = Convert.ToInt32(textBox_Min.Text);
  int sec = Convert.ToInt32(textBox_Sec.Text);

  DateTime dt = new DateTime(year, month, day, hour, min, sec);
  textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss") + "\r\n";
  textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss.FFFF") + "\r\n";
}

[すべて]ボタン

[すべて]ボタンがクリックされた場合は、ミリ秒まで含むすべての要素をコンストラクタの引数に与えます。指定した日時、ミリ秒のDateTimeオブジェクトを作成できます。
private void button_All_Click(object sender, EventArgs e)
{
  int year = Convert.ToInt32(textBox_Year.Text);
  int month = Convert.ToInt32(textBox_Month.Text);
  int day = Convert.ToInt32(textBox_Day.Text);
  int hour = Convert.ToInt32(textBox_Hour.Text);
  int min = Convert.ToInt32(textBox_Min.Text);
  int sec = Convert.ToInt32(textBox_Sec.Text);
  int msec = Convert.ToInt32(textBox_Msec.Text);

  DateTime dt = new DateTime(year, month, day, hour, min, sec,msec);
  textBox_Output.Text += dt.ToString("yyyy/MM/dd HH:mm:ss.ffff") + "\r\n";
}

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。テキストボックスには現在の日時の値が設定されています。


任意の日時の値を入力します。今回は"2005/10/12/09:08:15.000"を入力しました。


[年月日]ボタンをクリックします。指定した年月日の"00:00:00"のDateTimeオブジェクトが取得できました。


[年月日時分秒]ボタンをクリックします。指定した日時のDateTimeオブジェクトが取得できます。(ミリ秒部分は"000"になっています。)


[年月日時分秒]ボタンをクリックします。ミリ秒まで設定した値のDateTimeオブジェクトが取得できます。


ミリ秒を"000"以外の値に設定した場合の[すべて]ボタンの出力結果です。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-01-17
作成日: 2014-05-19
iPentec all rights reserverd.