カテゴリ: C# 更新日: 2025/11/24

C#で文字列から日時をパースする方法を完全解説!初心者にやさしいDateTime.Parse入門

C#で文字列から日時をパースする方法(DateTime.Parseなど)
C#で文字列から日時をパースする方法(DateTime.Parseなど)

先生と生徒の会話形式で理解しよう

生徒

「パソコンで日付を扱うときって、文字として書かれた日付をC#に読み取らせることってできますか?」

先生

「もちろんできますよ。C#には文字列から日付や時刻を読み取る“パース”という仕組みがあります。」

生徒

「パースってどういう意味なんですか?」

先生

「パースとは、文字として書かれた内容を、その意味に応じた形に変換することです。例えば『2025/03/01』という文字を、コンピューターが本当の日付として扱えるように変換することですね。」

生徒

「なるほど!どんなふうに書けば変換できるんですか?」

先生

「では、C#で文字列から日時をパースする基本をいっしょに見ていきましょう。」

1. 文字列から日時をパースするとは?

1. 文字列から日時をパースするとは?
1. 文字列から日時をパースするとは?

パソコンで扱う日付や時刻は、本来DateTime型として保持されます。しかし、ユーザーがキーボードで入力した日付や、ファイルやデータベースに保存されている日付は、ほとんどの場合文字列(string)です。この文字の状態では、計算ができなかったり、比較ができなかったりします。

そこで、C#では文字列として書かれた日付を本当の日時として扱えるように変換する「パース(解析)」が必要になるのです。日常生活でたとえるなら、紙にメモされた日時をカレンダーアプリに登録するような作業だと思うと分かりやすいでしょう。

2. DateTime.Parseで文字列から日時を読み取る

2. DateTime.Parseで文字列から日時を読み取る
2. DateTime.Parseで文字列から日時を読み取る

C#で最も簡単に文字列を日時に変換する方法が、DateTime.Parseです。これは、一般的な日付の書き方であれば自動的に読み取ってくれる便利な仕組みです。たとえば「2025/02/01」「2025-02-01」「2025年2月1日」など、よくある表記であれば問題なく変換できます。


string text = "2025/02/01";
DateTime date = DateTime.Parse(text);
Console.WriteLine(date);

このコードでは、文字列で書かれた日付をDateTime型に変換し、結果を画面に表示しています。変換された日付は内部的に「日付型」として扱われるので、日付の比較や計算などが自由にできるようになります。


2025/02/01 0:00:00

3. 日付の形式が決まっている場合はDateTime.ParseExact

3. 日付の形式が決まっている場合はDateTime.ParseExact
3. 日付の形式が決まっている場合はDateTime.ParseExact

文字列の日付形式が明確に決まっている場合は、DateTime.ParseExactを使うことでより安全に変換できます。このメソッドは、どんな書式で日付が書かれているかを指定し、その書式通りでなければエラーにするため、確実なパースが必要な場面で便利です。

例えば「2025-02-01」という形式を決めて処理したい場合は次のように書きます。


string text = "2025-02-01";
string format = "yyyy-MM-dd";
DateTime date = DateTime.ParseExact(text, format, null);
Console.WriteLine(date);

この方法では指定した書式にぴったり一致しないと変換できないため、日付の形式がバラバラに入ってくる心配がある場合は特に役に立ちます。

4. パースが失敗する可能性があるときはTryParseを活用

4. パースが失敗する可能性があるときはTryParseを活用
4. パースが失敗する可能性があるときはTryParseを活用

ユーザーが自由に入力できる場合など、いつも正しい形式で日付が渡されるとは限りません。そのようなときに使えるのが、変換が成功したかどうかを判定できるDateTime.TryParseです。

このメソッドは変換に失敗してもエラーを出さず、結果を受け取れたかどうかを真偽値で返してくれるため、プログラムが中断する心配がありません。


string text = "あした";
DateTime date;

if (DateTime.TryParse(text, out date))
{
    Console.WriteLine("変換成功: " + date);
}
else
{
    Console.WriteLine("日付として認識できませんでした。");
}

このようにTryParseを使うことで、入力ミスなどがあっても安全に処理を続けることができます。

5. 時刻を含む文字列をパースする方法

5. 時刻を含む文字列をパースする方法
5. 時刻を含む文字列をパースする方法

日付だけでなく、時刻(時間)を含む文字列も同じようにパースできます。「2025/02/01 14:30:00」のような文字が渡された場合も、C#は正確に変換することができます。


string text = "2025/02/01 14:30:00";
DateTime dateTime = DateTime.Parse(text);
Console.WriteLine(dateTime);

このように、日付と時刻のどちらも含む文字列でも問題なく日時として扱えるようになります。

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方