web-dev-qa-db-ja.com

TimeSpan.ToString( "hh:mm")エラー

カスタム形式でTimeSpanの文字列を取得したいときにエラーが発生した理由。

DateTime.Now.TimeOfDay.ToString("hh:mm");
// Error: Input string was not in a correct format.
25
DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss")

ドキュメント

52
Ravi M Patel

MSDNによると、TimeOfDayはTimeSpanです。 TimeSpan.ToString の例では、:はエスケープする必要があります。

hh \:mm \:ss:03:00:00

これはページでも説明されています Custom TimeSpan Format Strings

カスタムTimeSpan形式指定子には、日と時間、時間と分、秒と小数秒を区切る記号などのプレースホルダー区切り記号は含まれません。代わりに、これらのシンボルは、文字列リテラルとしてカスタム形式の文字列に含める必要があります。たとえば、「dd\.hh \:mm」は、日と時間の間の区切り文字としてピリオド(。)を定義し、時間と分の間の区切り文字としてコロン(:)を定義します。

だから試してください:

DateTime.Now.TimeOfDay.ToString("hh\:mm");
9
Michaël Hompus

TimeOfDayを使用しないでください。 _DateTime.Now_でToString()を直接実行します。

_DateTime.Now.ToString("hh:mm");
_

TimeOfDayTimeSpanです。ドキュメントはTimeSpan.ToString(string format)オーバーロードについてこれを明確に述べています:

formatパラメーターには、TimeSpan値の有効な標準またはカスタムの書式指定子を指定できます。formatがString.Emptyまたはnullの場合、現在のTimeSpanオブジェクトの戻り値は、共通の書式指定子( "c ")。formatが他の値の場合、メソッドはFormatExceptionをスローします。

TimeSpan変数を使用して行う必要がある場合は、時間部分をゼロに設定したDateTime変数に追加してから、ToString()を使用できます。

_DateTime.Today.Add(YourTimeSpanVariable).ToString("hh:mm");
_
0
dotNET