サーチ…


ParseExact

var dateString = "2015-11-24";

var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);

2015年11月24日12:00:00 AM

CultureInfo.CurrentCultureを3番目のパラメータとして渡すことは、 nullを渡すことと同じことに注意してください。または、特定の文化に合格することができます。

フォーマット文字列

入力文字列は、書式文字列に一致する任意の書式にすることができます

var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);

2015年11月24日12:00:00 AM

書式指定子ではない文字はすべてリテラルとして扱われます

var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);

2015年11月24日12:00:00 AM

書式指定子の大文字小文字問題

var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);

2015年11月24日11:01:30

月と分の値が間違った宛先に解析されたことに注意してください。

1文字の書式文字列は標準書式の1つでなければなりません

var date = DateTime.ParseExact("11/24/2015", "d", new CultureInfo("en-US"));
var date = DateTime.ParseExact("2015-11-24T10:15:45", "s", null);
var date = DateTime.ParseExact("2015-11-24 10:15:45Z", "u", null);

例外

ArgumentNullException

var date = DateTime.ParseExact(null, "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", null, null);

FormatException

var date = DateTime.ParseExact("", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "", null);
var date = DateTime.ParseExact("2015-0C-24", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "yyyy-QQ-dd", null);

// Single-character format strings must be one of the standard formats
var date = DateTime.ParseExact("2015-11-24", "q", null);

// Format strings must match the input exactly* (see next section)
var date = DateTime.ParseExact("2015-11-24", "d", null); // Expects 11/24/2015 or 24/11/2015 for most cultures

可能な複数のフォーマットの処理

var date = DateTime.ParseExact("2015-11-24T10:15:45", 
  new [] { "s", "t", "u", "yyyy-MM-dd" }, // Will succeed as long as input matches one of these
  CultureInfo.CurrentCulture, DateTimeStyles.None);

文化の違いを扱う

var dateString = "10/11/2015";
var date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-US"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);

日:11;月:10

date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);

日:10;月:11

TryParse

このメソッドは文字列を入力として受け取り、それをDateTimeに解析し、成功または失敗を示すブール結果を返します。呼び出しが成功すると、 outパラメーターとして渡された変数に、解析された結果が取り込まoutます。

解析に失敗すると、 outパラメータとして渡された変数はデフォルト値のDateTime.MinValue設定されます。

TryParse(string、out DateTime)

DateTime parsedValue;

if (DateTime.TryParse("monkey", out parsedValue))
{
   Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}

このメソッドは、システムの地域設定とISO 8601やその他の一般的な形式などの既知の形式に基づいて入力文字列を解析しようとします。

DateTime.TryParse("11/24/2015 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24T14:28:42", out parsedValue); // true
DateTime.TryParse("Sat, 24 Nov 2015 14:28:42", out parsedValue); // true

このメソッドはカルチャ情報を受け入れないため、システムロケールを使用します。これにより予期しない結果につながる可能性があります。

// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);

// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);

// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);

あなたが米国にいる場合、解析結果は10月11日ではなく11月10日であることに驚くかもしれません。

TryParse(文字列、IFormatProvider、DateTimeStyles、out DateTime)

if (DateTime.TryParse(" monkey ", new CultureInfo("en-GB"),
    DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out parsedValue)
{
    Console.WriteLine("Apparently, ' monkey ' is a date/time value. Who knew?");
}

兄弟メソッドとは異なり、このオーバーロードにより、特定のカルチャとスタイルを指定することができます。 IFormatProviderパラメーターのnullを渡すと、システムカルチャが使用されます。

例外

このメソッドでは、特定の条件下で例外をスローすることが可能であることに注意してください。これらは、 IFormatProviderDateTimeStylesこのオーバーロード用に導入されたパラメータに関連しています。

  • NotSupportedExceptionIFormatProviderはニュートラルカルチャを指定します。
  • ArgumentExceptionDateTimeStylesが有効なオプションではないか、 AssumeLocalAssumeUniversalなどの互換性のないフラグが含まれています。

TryParseExact

このメソッドは、 TryParseParseExact組み合わせとして動作します。カスタム形式を指定することができ、解析が失敗した場合に例外をスローするのではなく、成功または失敗を示すブール結果を返します。

TryParseExact(文字列、文字列、IFormatProvider、DateTimeStyles、out DateTime)

このオーバーロードは、特定の形式に対して入力文字列を解析しようとします。入力文字列は、解析するためにその形式と一致しなければなりません。

DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true

TryParseExact(string、string []、IFormatProvider、DateTimeStyles、out DateTime)

このオーバーロードは、入力文字列を一連のフォーマットに対して解析しようとします。入力文字列は、解析するために少なくとも1つの書式と一致する必要があります。

DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow