2

24 時間を超えるタイム スパン形式の文字列から合計秒数を取得する必要があります。以下は、私が使用したコードを抜粋したものです

static void Main(string[] args)
    {
        string s = "24:55:00.00";
        double d = (int)TimeSpan.Parse(s).TotalSeconds;
        Console.WriteLine(d);            
    }

上記を実行したとき、 Exception OverflowException was unhandledを取得しました。24 時間未満の文字列を使用する場合は、 23:55:05.09 のように言います。コードは正常に動作しています。それはC#の本当の制限ですか、それとも何か不足していますか

ありがとう

4

3 に答える 3

6

時間で23hを超えて使用することはできません

OverflowException s は、TimeSpan.MinValue より小さい数値、または TimeSpan.MaxValue より大きい数値を表します。- または -日、時、分、または秒のコンポーネントの少なくとも 1 つが有効な範囲外です。

MSDN のこちらを参照してください

最大時間は 23、分は 60 などです。

文字列を次のように変更します。

1:0:55:00.00

24h55mに等しくなります

于 2013-10-25T06:58:32.597 に答える
2

24 時間 55 分の期間の文字列表現を解析できるようにするには、次の文字列を使用する必要があります。

1.0:55:00.00

で使用される文字列表現がわからない場合はTimeSpan、逆変換を実行できます。

(TimeSpan.FromDays(1) + TimeSpan.FromMinutes(55)).ToString()

これにより、次の文字列が返されます。

1.0:55:00
于 2013-10-25T06:59:12.677 に答える
1

23 時間59 分59 秒99 ミリ秒を超える期間は使用できません。24 時間を超える期間を入力する場合は、次のコードを使用できます。

string s = "24:55:00.00";
string hoursS = s.Split(':')[0];
double hours = int.Parse(hoursS);

double totalSeconds = hours*3600;

s = s.Substring(hoursS.Length);
s = "00" + s;
double d = (int)TimeSpan.Parse(s).TotalSeconds;

totalSeconds += d;
Console.WriteLine(totalSeconds);

文字列で 60 分、秒、ミリ秒を超えて使用したい場合は、提供したコードに基づいて簡単に追加できます。

于 2013-10-25T07:08:05.597 に答える