2017-11-15 3 views
0

私はTimespanのようにいくつかの変数を返すデータ処理システムを持っています。ユーザーは、書式文字列を指定してこの出力を表示する方法を設定し、それをタイムスパンに適用することができます。.Net 4.5.x - オプションのセクションでのカスタムTimeSpanフォーマット?

ユーザーはフォーマットをd \、\ h:mm:ss、出力は0、0:00:00(ゼロ)に設定します。

私はシステムが自動的にゼロ日であるか時間をスキップできるようにしたいと思います。

つまり、ユーザーはフォーマット[d \、] [h:] mm:\ ssを設定し、00時から59時59分を1時間未満、1時00分から23時59分59秒1日以上、1:00:00:00〜x日、nn:nn:nn以上の場合はx =日数です。

組み込みタイムパンには、角括弧で囲まれた「オプション」セクションはありません。

これを達成するための簡単な方法はありますか?私は見ていませんか、独自のバージョンのTimeSpanフォーマッタを作成する必要はありますか?

+0

C#またはVb?あなたは両方のタグを持っています – Fleury26

+0

どちらか/または、私のコードはVBですが、C#の解決策も同様に役立ちます。 – Ade

答えて

1

正確にエレガントないが、私はこのようなものでした:

Dim fmt As String 
    fmt = If(thisTimespan >= TimeSpan.FromDays(1), "d\d\-\ h\:mm\:ss\.fff", "h\:mm\:ss\.fff") 

をあなたは簡単にだけでなく、不要な時間を排除するために、これを拡張することができます。

+0

フォーマットがコードで修正されているが、ユーザがそれを設定できるなら、これは問題ありません。例えば数日後にカンマが欲しくないかもしれません。彼らは日数を表示したくないかもしれません... – Ade

+0

あなたが好きな書式のためにどのようなソースを使用することができます。あなたの例では、括弧で囲まれたセクション(ユーザー指定)を分割し、タイムパンの値に基づいて最終的な書式設定文字列(角括弧なし)に追加することができます。 – Patrick

関連する問題