私はそのDateTime.TryParseExact
方法を試していますが、私が得られないケースに遭遇しました。いくつかの形式といくつかのサブジェクトを解析する必要があり、それぞれが形式の 1 つに完全に一致する必要があります。
var formats = new[]
{
"%H",
"HH",
"Hmm",
"HHmm",
"Hmmss",
"HHmmss",
};
var subjects = new[]
{
"1",
"12",
"123",
"1234",
"12345",
"123456",
};
次に、それらすべてを解析して結果を出力しようとします。
foreach(var subject in subjects)
{
DateTime result;
DateTime.TryParseExact(subject, formats,
CultureInfo.InvariantCulture,
DateTimeStyles.NoCurrentDateDefault,
out result);
Console.WriteLine("{0,-6} : {1}",
subject,
result.ToString("T", CultureInfo.InvariantCulture));
}
私は以下を取得します:
1 : 01:00:00
12 : 12:00:00
123 : 00:00:00
1234 : 12:34:00
12345 : 00:00:00
123456 : 12:34:56
そして私の質問に...なぜ123と12345で失敗するのですか? それらは 01:23:00 と 01:23:45 になるべきではありませんか? ここで何が欠けていますか?そして、どうすれば期待どおりに動作させることができますか?
更新:というわけで、これがうまくいかない理由を突き止めたようです。H
は実際には 2 桁を取得してから、 に 1 つだけ残して失敗mm
するようです。しかし、探している結果が得られるようにこのコードを変更する方法について、誰かが良い考えを持っていますか?
別の更新:合理的な解決策を見つけたと思います。回答として追加しました。他の誰かがさらに良いものを考え出さない限り、2 日以内に受け入れます。助けてくれてありがとう!