Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

C#辞典

  1. トップページ
  2. C#辞典
  3. DateTime.Parse() / DateTime.TryParse()

DateTime.Parse() / DateTime.TryParse()

日時を表す文字列を『DateTime』型に変換する『DateTime.Parse()』と、変換失敗時でも例外を投げない安全な『DateTime.TryParse()』です。

構文
// 文字列を DateTime に変換します(失敗すると例外が発生します)。
DateTime dt = DateTime.Parse(string s);

// 変換を試みて、成功なら true・失敗なら false を返します(例外なし)。
bool 成功 = DateTime.TryParse(string s, out DateTime result);

// 書式を指定して変換します。
DateTime dt = DateTime.ParseExact(string s, string format, IFormatProvider provider);
bool 成功 = DateTime.TryParseExact(string s, string format, IFormatProvider provider, DateTimeStyles style, out DateTime result);
メソッド一覧
メソッド概要
DateTime.Parse(s)文字列を DateTime に変換します。変換できない場合は FormatException をスローします。
DateTime.TryParse(s, out result)変換に成功すると true と result に変換結果を返します。失敗時は false を返し例外は発生しません。
DateTime.ParseExact(s, format, provider)指定した書式に厳密に一致する場合のみ変換します。書式の指定が必要な場合に使います。
DateTime.TryParseExact(s, format, provider, style, out result)ParseExact の例外なしバージョンです。
サンプルコード
using System;
using System.Globalization;

// DateTime.Parse() で変換します。
DateTime dt1 = DateTime.Parse("2024/01/15");
Console.WriteLine(dt1); // 2024/01/15 0:00:00

DateTime dt2 = DateTime.Parse("2024-03-20 14:30:00");
Console.WriteLine(dt2); // 2024/03/20 14:30:00

// TryParse() で安全に変換します(ユーザー入力などに推奨)。
string 入力 = "2024/06/01";
if (DateTime.TryParse(入力, out DateTime 結果)) {
	Console.WriteLine($"変換成功: {結果:yyyy年M月d日}");
} else {
	Console.WriteLine("変換に失敗しました。");
}

// 変換できない文字列は false が返ります。
bool 成功 = DateTime.TryParse("abc", out DateTime 失敗例);
Console.WriteLine($"変換成功: {成功}"); // False

// ParseExact() で書式を厳密に指定します。
DateTime dt3 = DateTime.ParseExact("20240115", "yyyyMMdd", CultureInfo.InvariantCulture);
Console.WriteLine(dt3); // 2024/01/15 0:00:00

// TryParseExact() の例です。
bool ok = DateTime.TryParseExact(
	"15-01-2024",
	"dd-MM-yyyy",
	CultureInfo.InvariantCulture,
	DateTimeStyles.None,
	out DateTime dt4
);
Console.WriteLine($"変換成功: {ok}, 結果: {dt4:yyyy/MM/dd}");
概要

ユーザーの入力値やファイルから読み込んだ文字列を DateTime に変換する際は、例外が発生しない『TryParse()』または『TryParseExact()』を使用してください。『Parse()』は形式が保証された文字列(定数やDB値など)にのみ使用します。

書式が特定の形式に固定されている場合(yyyyMMdd 形式のファイル名など)は『ParseExact()』が便利です。CultureInfo.InvariantCulture を指定するとロケールに依存しない変換が行えます。

変換後の日時書式化は『日時.ToString() / 日時.AddDays()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。