C# で文字列を日時に変換

Minahil Noor 2024年2月16日
  1. Convert.ToDateTime() を使用して stringDateTime に変換する C# プログラム
  2. DateTime.Parse() を使用して stringDateTime に変換する C# プログラム
  3. DateTime.ParseExact() を使用して stringDateTime に変換する C# プログラム
  4. まとめ
C# で文字列を日時に変換

ほとんどの場合、文字列の形式で日付を取得し、日、月、年を個別に使用します。心配する必要はありません。C# では、文字列を DateTime オブジェクトに変換するために、DateTime という名前の事前定義されたクラスを使用します。

C# で文字列を DateTime に変換する方法はいくつかありますが、ここでは、実行例を使用して 3つのメソッドのみを詳しく説明します。これらのメソッドは、Convert.ToDateTime()DateTime.Parse()、および DateTime.ParseExact() です。

Convert.ToDateTime() を使用して stringDateTime に変換する C# プログラム

Convert.ToDateTime() の正しい構文は次のとおりです

Convert.ToDateTime(dateTobeConverted);
Convert.ToDateTime(dateTobeConverted, cultureInfo);

ここで、カルチャ情報(CultureInfo)を提供しない場合、コンパイラーはデフォルトで日付文字列を月/日/年として表示します。ことに注意してください。CultureInfo は、System.Globalization 名前空間の C# クラスで、特定の文化に関する情報。

using System;

public class Conversion {
  public static void Main() {
    string CurrentDate = "06/04/2020";

    // Use of Convert.ToDateTime()
    DateTime DateObject = Convert.ToDateTime(CurrentDate);
    Console.WriteLine("The Date is: " + DateObject.Day + " " + DateObject.Month + " " +
                      DateObject.Year);
  }
}

出力:

The Date is: 4 6 2020

次に、CultureInfo オブジェクトをパラメーターとして渡して実装します。

using System;
using System.Globalization;
public class Conversion {
  public static void Main() {
    string CurrentDate = "06/04/2020";

    // Creating new CultureInfo Object
    // You can use different cultures like French, Spanish etc.
    CultureInfo Culture = new CultureInfo("en-US");
    // Use of Convert.ToDateTime()
    DateTime DateObject = Convert.ToDateTime(CurrentDate, Culture);
    Console.WriteLine("The Date is: " + DateObject.Day + " " + DateObject.Month + " " +
                      DateObject.Year);
  }
}

出力:

The Date is: 4 6 2020

CultureInfonl-NL に変更すると、月と日が入れ替わります。

using System;
using System.Globalization;
public class Conversion {
  public static void Main() {
    string CurrentDate = "06/04/2020";
    CultureInfo Culture = new CultureInfo("nl-nl");

    DateTime DateObject = Convert.ToDateTime(CurrentDate, Culture);
    Console.WriteLine("The Date is: " + DateObject.Day + " " + DateObject.Month + " " +
                      DateObject.Year);
  }
}

出力:

The Date is: 6 4 2020

DateTime.Parse() を使用して stringDateTime に変換する C# プログラム

DateTime.Parse() の構文は、

DateTime.Parse(dateTobeConverted);
DateTime.Parse(dateTobeConverted, cultureInfo);

DateTime.Parse() メソッドの場合も同じです。引数としてカルチャ情報を提供していない場合、デフォルトではシステムは月/日/年として表示します。

変換される文字列の値が null の場合、ArgumentNullException が返されます。これは、try-catch ブロックを使用して処理する必要があります。

using System;

public class Conversion {
  public static void Main() {
    string CurrentDate = "06/04/2020";

    // Use of DateTime.Parse()
    DateTime DateObject = DateTime.Parse(CurrentDate);
    Console.WriteLine("The Date is: " + DateObject.Day + " " + DateObject.Month + " " +
                      DateObject.Year);
  }
}

出力:

The Date is: 4 6 2020

DateTime.ParseExact() を使用して stringDateTime に変換する C# プログラム

DateTime.ParseExact() の構文は、

DateTime.ParseExact(dateTobeConverted, dateFormat, cultureInfo);

DateTime.ParseExact() は文字列を DateTime に変換する最良の方法です。このメソッドでは、日付の形式を引数として渡します。これにより、ユーザーが変換を正確に実行することが容易になります。

ここでは、文化情報の代わりに null をパラメーターとして渡しました。これは、まったく新しいトピックであり、それを理解するには時間がかかるためです。

using System;

public class Conversion {
  public static void Main() {
    string CurrentDate = "06/04/2020";

    // Use of DateTime.ParseExact()
    //  culture information is null here
    DateTime DateObject = DateTime.ParseExact(CurrentDate, "dd/MM/yyyy", null);
    Console.WriteLine("The Date is: " + DateObject.Day + " " + DateObject.Month + " " +
                      DateObject.Year);
  }
}

出力:

The Date is: 6 4 2020

まとめ

C# で文字列を DateTime に変換する方法はたくさんあります。それらのいくつかについて説明しました。文字列を DateTime に変換する最良の方法は DateTime.ParseExact() です。

関連記事 - Csharp String

関連記事 - Csharp Datetime