-1

ループ内に間隔サイズ(1分と仮定)の期間を追加しています。23:59になると、この時点で1分を追加しようとすると、結果は1.00:00:00:00のようになります。これ。23:59:00のように、継続的に追加間隔を取得するにはどうすればよいですか。

00:00:00
00:01:00
00:02:00

ありがとう。

4

5 に答える 5

4

また

  • タイムスパンを表示するときは、日の部分を無視してください。
string toDisplay = yourTimeSpan.ToString("hh:mm:ss");
  • タイムスパンをインクリメントした後、1日以上の場合は、1日を減算します。
if (yourTimeSpan.Days == 1)
  yourTimeSpan = yourTimeSpan.Subtract(TimeSpan.FromDays(1));

// or Wonko the Sane's improved version
if (yourTimeSpan.Days > 0) yourTimeSpan = new TimeSpan();
于 2012-11-01T14:17:35.620 に答える
0

標準のtoString()メソッドを使用してTimeSpanの値を出力していると思いますか?これにより、「人間がフォーマットした」時間表現でTimeSpanが生成されます。たとえば、25時間は1日と1時間になります。

たとえば、合計分数を取得する場合は、TimeSpan.TotalMinutesプロパティを使用します。

于 2012-11-01T14:16:07.430 に答える
0

23:59に達した後、00:00にループバックしたいですか?

ループ内、またはこれを達成しようとしている場所で、Daysコンポーネントが0より大きいかどうかを確認し、大きい場合は1日を減算します。

単純すぎて正しくないようです...あなたは本当に何を探していますか?

于 2012-11-01T14:16:27.067 に答える
0

TimeSpan1日以上経過すると、その形式の出力が得られます。それでも時間形式で表示したい場合は、次のようなものを試してください

String.format({0}:{1}:{2}, span.Days*24 + span.Hours, span.Minutes, span.Seconds)
于 2012-11-01T14:17:06.353 に答える
0

TimeSpanが1日を超えると、ToString()でフォーマットされ、返された文字列にその日が追加されます。ToString()をフォーマットするか、累積してから1日後に減算することができます。TimeSpanが1日を超えないようにする場合は、次のコードを確認してください。

TimeSpan ts = new TimeSpan();
DateTime dt = new DateTime();
TimeSpan day = dt.AddDays(1) - dt;
TimeSpan minute = dt.AddMinutes(1) - dt;

for (int i = 0; i < 20000; i++)
{
     ts = ts.Add(minute);
     if (ts.TotalDays > 1)
     {
         ts = ts.Subtract(day);
     }
}
于 2012-11-01T14:22:36.573 に答える