カスタム形式でTimeSpan
の文字列を取得したいときにエラーが発生した理由。
DateTime.Now.TimeOfDay.ToString("hh:mm");
// Error: Input string was not in a correct format.
DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss")
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");
TimeOfDay
を使用しないでください。 _DateTime.Now
_でToString()
を直接実行します。
_DateTime.Now.ToString("hh:mm");
_
TimeOfDay
はTimeSpan
です。ドキュメントはTimeSpan.ToString(string format)
オーバーロードについてこれを明確に述べています:
formatパラメーターには、TimeSpan値の有効な標準またはカスタムの書式指定子を指定できます。formatがString.Emptyまたはnullの場合、現在のTimeSpanオブジェクトの戻り値は、共通の書式指定子( "c ")。formatが他の値の場合、メソッドはFormatExceptionをスローします。
TimeSpan
変数を使用して行う必要がある場合は、時間部分をゼロに設定したDateTime
変数に追加してから、ToString()
を使用できます。
_DateTime.Today.Add(YourTimeSpanVariable).ToString("hh:mm");
_