【C#】DateTime.TryParseExactの使い方

すぐ忘れて何度も調べることになるのでメモ

確認環境

  • VisualStudio2019
  • C# 9.0(バージョン不問

コード例

具体的にフォーマットを指定する場合以下のように指定する

bool isOK = 
    DateTime.TryParseExact("20220413123045", "yyyyMMddHH:mm:ss", 
        CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result);

if (isOK)
{
    // 変換できた時の処理
}
  • 上記引数は雑に以下認識でOK
    • CultureInfo.InvariantCulture = 言語形式に依存しない形式、
    • DateTimeStyles.None = 具体的に形式を指定する場合NoneでOK

具体的とは、"yyyyMMdd"のこと。逆に形式を "s"、"D"、"r"、"F" など言語によって表示が変わる形式を Parse する場合、カルチャーは対象言語を正しく指定して、DateTimeStyles は入力される可能性のある文字列に対して正しく設定すること(=多言語対応で無限にトラブルが出るのでこれは全く推奨できない)