文字列型(string型)から時刻・日付型(DateTime型)に変換する - C#

C#で文字列から時刻・日付型(DateTime型)に変換するコードを紹介します。

概要

指定したフォーマットの文字列を時刻・日付型(DateTimeクラス)に変換する場合はDateTime.ParseExact()メソッドを用います。

プログラム

UI

下図のUIを作成します。フォームにTextBoxを2つ、Buttonを1つ配置します。

コード

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

    private void button1_Click(object sender, EventArgs e)
    {
      DateTime input = System.DateTime.ParseExact(textBox1.Text, "yyyy/MM/dd",
        System.Globalization.DateTimeFormatInfo.InvariantInfo,
        System.Globalization.DateTimeStyles.NoCurrentDateDefault);

      textBox2.Text = input.ToString("yyyy年 M月 d日");

    }
  }
}

解説

  DateTime input = System.DateTime.ParseExact(textBox1.Text, "yyyy/MM/dd",
    System.Globalization.DateTimeFormatInfo.InvariantInfo,
    System.Globalization.DateTimeStyles.NoCurrentDateDefault);
にてtextBox1に入力された文字列をDateTime型に変換します。受け付ける文字列は"HHmmss.fff"形式です。

  textBox2.Text = input.ToString("yyyy年 M月 d日");
変換したDateTime型の変数をフォーマットしてtextBox2に表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


上部のテキストボックスに"yyyy/MM/dd"形式の文字列を入力します。入力後ボタンをクリックします。


入力した文字列からDateTimeオブジェクトに変換し値を下部のテキストボックスに表示します。正しく変換できていることがわかります。


入力を別の文字列に変更しても正しく動作します。

別の例

時刻を表す文字列からDateTimeに変換するコードの例です。
private void button1_Click(object sender, EventArgs e)
{
  DateTime input = System.DateTime.ParseExact(textBox1.Text, "HHmmss.fff",
    System.Globalization.DateTimeFormatInfo.InvariantInfo,
    System.Globalization.DateTimeStyles.NoCurrentDateDefault);

  textBox2.Text = input.ToString("HH時mm分ss秒 fff");
}

解説

  DateTime input = System.DateTime.ParseExact(textBox1.Text, "HHmmss.fff",
    System.Globalization.DateTimeFormatInfo.InvariantInfo,
    System.Globalization.DateTimeStyles.NoCurrentDateDefault);
にてtextBox1に入力された文字列をDateTime型に変換します。受け付ける文字列は"HHmmss.fff"形式です。

  textBox2.Text = input.ToString("HH時mm分ss秒 fff");
変換したDateTime型の変数をフォーマットしてtextBox2に表示します。

実行結果

入力した文字列がDateTime型に変換できています。

複数の入力パターンを受け付ける場合

複数の入力パターンを受け付ける場合はパターンに配列を与えます。

コード

private void button1_Click(object sender, EventArgs e)
{
  string[] Formats = { "yyyy M d", "M d", "yyyy/M/d", "M/d", 
    "yyyy MM dd", "MM dd", "yyyy/MM/dd", "MM/dd" };
      
  DateTime input = System.DateTime.ParseExact(textBox1.Text, Formats,
    System.Globalization.DateTimeFormatInfo.InvariantInfo, 
    System.Globalization.DateTimeStyles.NoCurrentDateDefault);

  textBox2.Text = input.ToString("MMMMd日dddd");
}
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2017-09-05
作成日: 2011-08-27
iPentec all rights reserverd.