DotNetとC#は初めてです。 mm/dd/yyyy
フォーマットの文字列をDateTime
オブジェクトに変換したいです。私は以下のように解析関数を試しましたが、それはランタイムエラーを投げています。
DateTime dt=DateTime.Parse("24/01/2013");
どのようにしてdatetimeに変換するのですか?
DateTime.ParseExact
を"dd/MM/yyyy"
という形式で使用する必要があります。
DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
フォーマットにd/M/yyyy
を使用した方が安全です。それは1桁と2桁の日/月の両方を処理するからです。あなたが一桁/二桁の値を期待しているかどうかしかしそれは本当に異なります。
あなたの日付フォーマットday/Month/Year
は、文化によっては許容できる日付フォーマットかもしれません。たとえば、カナダの文化の場合、en-CA
DateTime.Parse
は次のように機能します。
DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
または
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture
上記の両方の行は、文字列のフォーマットがen-CA
カルチャに適しているために機能します。 DateTime.Parse
呼び出しにカルチャを提供していないため、現在のカルチャは日付フォーマットをサポートしていない解析に使用されます。詳しくは DateTime.Parse をご覧ください。
もう1つの解析方法は DateTime.TryParseExact
を使うことです。
DateTime dt;
if (DateTime.TryParseExact("24/01/2013",
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//valid date
}
else
{
//invalid date
}
.NET FrameworkのメソッドのTryParse
グループは無効な値に対して例外をスローしません。代わりに、それらは解析の成功または失敗を示すbool
値を返します。
私は日と月にそれぞれ単一のd
とM
を使ったことに注意してください。 Single d
とM
は、1桁/ 2桁の日と月の両方で機能します。そのためd/M/yyyy
フォーマットの有効値は次のようになります。
さらに読むために、あなたは見るべきである: カスタムの日付と時刻のフォーマット文字列
DateTime.ParseExact
を使う
string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
null
は現在のカルチャを使用しますが、多少危険です。特定の文化を提供しよう
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
"dd/MM/yyyy"
で使うためにDateTime.ParseExact
フォーマットを使うことができます。
指定されたフォーマットおよびカルチャ固有のフォーマット情報を使用して、指定された日時のストリング表現をそれと等価なDateTimeに変換します。 文字列表現の形式は、指定された形式と正確に一致する必要があります。
DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
これは DEMO
です。
詳しくは、 Custom Date and Time Format Strings
をご覧ください。