1

背景: 別のバックエンド システムからデータを受信するシステムがあります。そのデータの表示を処理し、特定のものをどのように表示するかを制御する独自の XML テンプレートを用意しています (つまり、列ヘッダーが何であるかを指示する独自の列テンプレートを用意しています)。バックエンドからの値に適用されるこれらの列テンプレートのマスクを提供する機能。以下は、私が問題を抱えているシナリオです。

問題: 単純な文字列形式が機能していないようです。4 桁の STRING 値 (つまり "1444") を時刻形式 (つまり "14:44") でフォーマットしたいと思います。私はもう試した:

String.Format("{0:00:00}", "1444")

入力が STRING であることの重要性に注意してください。int 値を指定すると、フォーマットが機能します。これを使用できない理由は、バックエンドから受け取るすべてのデータが文字列形式であり、これを汎用にしたいためです (したがって、キャストは実際にはオプションではありません)。

一般的に言うと、独自の XML テンプレートで次のようなマスクを指定したいということです。

<MyColumnTemplate Id="MyColumn" Mask="00:00" />

文字列値の文字列形式呼び出しでそのマスクを使用するには? マスクが失敗した場合は、単純に元の値を返すことができます (String.Format() メソッドがデフォルトで既に行っているように)。

編集:明確にするために、コードで実行できるようにしたいことの簡略化されたバージョンを次に示します。

string inputValue = "1444";
string maskValueFromXml = "00:00";

string mask = "{0:" + maskValueFromXml + "}";
string myDesiredEndResult = String.Format(mask, inputValue);
4

2 に答える 2

0

DateTime.TryParseExact で試してください。

    DateTime dateEntered;
    string input = "1444";

    if (DateTime.TryParseExact(input, "HH:mm", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out dateEntered))
    {
        MessageBox.Show(dateEntered.ToString());
    }
    else
    {
        MessageBox.Show("You need to enter valid 24hr time");
    }

その後、MSDNで定義済みの形式である string.Format を使用できます。

于 2013-10-29T14:27:36.463 に答える