9

時間が 0 から 23 までの時間(時間、分、秒)の文字列を解析できるようにしたいと考えています。1 桁の時間の前のゼロはオプションです。

有効なオブジェクトに解析できるようにしたい時間文字列の例DateTime:

  • 212540
  • 061525
  • 94505

解析を管理するために C# メソッドDateTime.ParseExactを使用しようとしていますが、「先行ゼロのない 1 桁の時間」シナリオを処理できるフォーマット文字列を考え出すことはできません。

DateTime.ParseExact上記のすべての例を同じコード行で十分に解析するには、フォーマット文字列をどのように指定すればよいですか?

カスタムの日付と時刻の形式に関する MSDN ページに触発されて、次のアプローチを試しました。

DateTime.ParseExact(time_string, "Hmmss", CultureInfo.InvariantCulture);
DateTime.ParseExact(time_string, "%Hmmss", CultureInfo.InvariantCulture);
DateTime.ParseExact(time_string, "HHmmss", CultureInfo.InvariantCulture);

これらのフォーマット文字列はすべて、上記の最初の 2 つの例で機能しますが、1 桁の時間で前にゼロがない場合、すべての式でFormatException.

4

3 に答える 3

2

常に 6 文字になることがわかっている場合は、入力文字列を埋め込むことができます。

string input = "94505";
if(input.Length < 6)
   input = input.PadLeft(6, '0');

(またはinput.Length == 5、より短い他の有効な形式がある場合に使用します)。

于 2013-09-24T10:31:23.990 に答える
0

使用について:

DateTime.ParseExact(time_string, "Hmmss", CultureInfo.InvariantCulture).ToString("HH:mm:ss")

于 2015-08-21T16:53:34.823 に答える