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