0

文字列内のテキストをフォーマットしたいと思います。したがって、テキストを入力すると0759、フォーマットする必要があります07:59 (minutes and seconds)

同じように動作するはずです(疑似コード)

入力 759 -> 出力 07:59

入力 10545 -> 出力 01:05:45 (時間、分、秒)

入力 5 -> 出力 00:05

使おうと思っstring.Format()たのですが、初心者でやり方がよくわかりません。

ありがとう!

4

4 に答える 4

1

これを達成するには、いくつかの異なるフープをジャンプする必要があります。数値を文字列にキャストし、適切な桁数 (6) を埋める必要があります。次に、適切な情報を使用して DateTime.ParseExact を呼び出す必要があります。以下のコードは、必要なものすべてに対して機能するはずです。

void Main()
{

var i = 10545;
var t = i.ToString().PadLeft(6, '0');

var d = DateTime.ParseExact(t, "HHmmss", System.Globalization.CultureInfo.InvariantCulture );

Console.WriteLine(string.Format("{0:HH:mm:ss}", d));
}

必要な正確な時間、分、秒を取得するには、24 時間形式を使用する必要があります。235959 を超えるとエラーになるため、別の方法で処理する必要があります。

DateTime.ParseExact() のドキュメントとフォーマット コードのドキュメントを参照してください。

于 2013-08-30T15:30:23.587 に答える
1

この方法を使用できます:

public static TimeSpan? TryParseTimeSpan(string input)
{
    TimeSpan? ts = (TimeSpan?)null;
    if (!string.IsNullOrWhiteSpace(input))
    {
        input = input.Trim();
        int length = input.Length % 2 == 0 ? input.Length : input.Length + 1;
        int count = length / 2;

        if(count > 3) return null;

        input = input.PadLeft(count * 2, '0');

        string[] validFormats = new[] { "HHmmss", "mmss", "ss" };
        DateTime dt;
        if (DateTime.TryParseExact(input, validFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
            ts = dt.TimeOfDay; 
    }
    return ts;
}

ただし、89 秒の 2 番目の部分は受け入れません。これは有効な入力ではありません (imho)。

このサンプル入力でテスト:

List<string> inputs = new List<string> { "78", "10545", "5" };
IEnumerable<TimeSpan> timeSpans = inputs
    .Select(i => TryParseTimeSpan(i))
    .Where(ts => ts.HasValue)
    .Select(ts => ts.Value);
foreach (TimeSpan ts in timeSpans)
    Console.WriteLine(ts.ToString());

DEMO

出力:

01:05:45
00:00:05
于 2013-08-30T15:31:00.543 に答える
0

最初に、フォーマット文字列を使用する 00:00 のフォーマットを設定する必要があります"00:00"

string input = 0789
input = String.Format("00:00",input); //input is now 07:89

ただし、これは 4 桁を超える値では機能しません。TimeSpanオブジェクトにはすでに分と秒のコンポーネントがあるため、これらを処理するにはオブジェクトを使用する方がよいでしょう。

タイムスパン: http://msdn.microsoft.com/en-us/library/system.timespan.aspx

フォーマット ソース: http://msdn.microsoft.com/en-us/library/system.string.format.aspx

于 2013-08-30T15:18:42.883 に答える