6

私はたくさんのもので文字列をフォーマットする必要があるプロジェクトに取り組んでいますが、関連する部分は最初の部分 - ツアーの時間です:

与えられた

DateTime start = Convert.ToDateTime(myClass.StartDateTime);

10:00 または < space >3:00 を表示するには、string.Format を使用して出力するにはどうすればよいですか?

次のようなフォーマット文字列を使用できることはわかっています。

string  text = string.Format("{0:hh:mm tt}",_start);

しかし、それは私が1桁の時間には望まない先行ゼロ(03:00 PM)を与えます。

これを行うためにフォーマット文字列に追加できるものはありますか、それとも先頭のゼロを手動でスペースに置き換える必要がありますか? (これが事実だと思いますが、フォーマット方法があるかどうかを知ることができるように尋ねたかったのです。)

4

3 に答える 3

6

オーバーロードで条件付きチェックを行うことができますToString

string _text = _start.ToString((_start.Hour > 9) ? "hh:mm tt" : " h:mm tt");
于 2013-07-11T20:40:45.320 に答える
3

すべてフォーマット文字列で行いたい場合は、配置コンポーネントを使用できます。MSDN の 複合フォーマットを参照してください。

フォーマット項目の構文

各フォーマット アイテムは次の形式を取り、次のコンポーネントで構成されます。

{index[,alignment][:formatString]}

...

アライメント コンポーネント

オプションの配置コンポーネントは、フォーマットされた優先フィールド幅を示す符号付き整数です。整列の値がフォーマットされた文字列の長さよりも小さい場合、整列は無視され、フォーマットされた文字列の長さがフィールド幅として使用されます。フィールド内の書式設定されたデータは、配置が正の場合は右揃えになり、配置が負の場合は左揃えになります。パディングが必要な場合は、空白が使用されます。配置を指定する場合は、カンマが必要です。

結果を 8 文字のフィールドで右揃えにしたいのでh、@David Stratton の回答のように、単一のフォーマット文字列で正の 8 の配置コンポーネントを次のように使用します。

string _text = string.Format("{0,8:h:mm tt}", _start);
于 2013-07-12T14:35:32.377 に答える