TimeSpanを、いい感じに入力できて表示する値コンバーターです。
- 時間間隔(TimeSpan) をTextBoxに入力する時に、どの区切り文字でもOKにします。→ざっくり楽に入力できます。
- 日数は、時間に変換して表示できます。2days → 48hours。
- マイナス表示ができます。 -1と入力した時、-1:0:0と表示。
入力値からTimeSpanへ変換
- 1つの数値は、時間として認識。
"0" to "0:0:0" , "-1" to "-01:00:00" - 2つの数値は、時間・分として認識。
"1:2" to "01:02:00" - 3つの数値は、時間・分・秒として認識。
"1:2:3" to "01:02:03" - 4つの数値は、日数・時間・分・秒として認識。
"1:2:3:4" to "1.02:03:04" - 数字以外の文字は、区切り文字として利用。ただし、先頭の「-」は、マイナスとして扱う。
"1,2 3aaaa4" to "1.02:03:04"
パラメーター
-
ConverterParameter
TimeSpan format stringsを利用でき、また、{SumHours}
,{Sign}
を、利用可能。
{SumHours}
は、日数を時間に換算したのを含め合計した時間。また、自動でマイナス表示になります。
{Sign}
は、時間間隔がマイナスの時に「-」に置き換えます。 -
IsShortTime
Trueの時は、入力した秒の数値が0で無いとエラーが返ります。 -
Max, Min
入力時の制限として、時間間隔の最大値・最小値を指定。
デモ画面
-
25とだけ入力すると25時間0分0秒として認識。
デフォルトでは、日数を時間に換算して表示する。
TextBoxでなく、TextBlockにコンバーターを利用した場合。
-
-240時間 →
{Sign}
を、「-」に置き換えて、-10日間として表示。
d hh mm ss
は、TimeSpan 書式指定文字列。
その他
- 顧客マネジメントソフト ガンジスで利用するために作成しました。
- 参考:How to parse string with hours greater than 24 to TimeSpan?
- 時間は、緩いフォーマットで入力できると入力が楽な感じです。区切り文字に「:」を必ず使わないといけない、とかの入力のフォーマットの制限は、PCの都合であって人に合わせたものでは無いとも言えるでしょう。電話番号の入力は、半角・全角のどちらも受け入れて、内部で半角に変換して統一するのが、ユーザーフレンドリーなのと同じです。
コード
System Requirements
- .NET 6
History
- 2021-03-26 Ver 1.0
- 2021-12-17 Ver 1.1
- Added ValidationRules: IsShortTime
- Changed StringFormat. Replace
- 2023-09-19 Ver 1.2
- Changed to from .NET 5 to .NET 6
- Fixed TimeSpanUtils.GetTimeSpan Method.
ライセンス
MIT