13

私がこれをしたら

// Default implementation of UNIX time of the current UTC time
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string myResult = "";
myResult = Convert.ToInt64(ts.TotalSeconds).ToString();

myResult の最大文字列長はどれくらいですか? また、常に同じサイズですか?

4

4 に答える 4

34

Int64 は符号付き 64 ビット整数です。つまり、値の範囲は から−9,223,372,036,854,775,808まで9,223,372,036,854,775,807です。

は出力をコンマでフォーマットしないためtoString、文字列の可能な最長値−9223372036854775808は 20 文字です。

ここで、これは UNIX タイムスタンプを表しているため、返される「妥当な」日付と見なされるものを考慮する必要があります。これを書いている現在の UNIX タイムスタンプ1292051460は、10 桁の数字である に近いものになります。

最大長が 10 文字であると仮定すると、タイムスタンプの範囲は から-99999999までになり9999999999ます。これにより、「Mon, 31 Oct 1966 14:13:21 GMT」から「Sat, 20 Nov 2286 17:46:39 GMT」までの日付の範囲が得られます。下限に否定記号を文字として含めていることに注意してください。これが、下限が上限よりもエポックに非常に近い理由です。

日付が 1966 年のハロウィーンより前または 2286 年 11 月下旬以降であると想定していない場合は、文字列の長さが 10 文字を超えないことを合理的に想定できます。この範囲外の日付が予想される場合 (2286 年以降ではなく 1966 年より前の可能性が高い)、11 文字の文字列が表示されることが予想されます。それ以上は期待しません。

これが期待される最大文字数です。短くなる可能性があります。

于 2010-12-11T07:20:56.620 に答える
5

コードが将来的に使用されると仮定すると、Int64 の最大長になります。

たとえば、現在その値は 1292022273 なので、長さは 10 になります。

ここで秒を含む計算機を見つけることができますhttp://www.timeanddate.com/date/duration.html

于 2010-12-11T07:03:01.343 に答える
1

Convert.ToInt64()書式設定なしで固執する場合、最小長は 20 であるため、最大長は20になります(マイナス記号には余分な文字が必要です)。ただし、実際には、およびの制限により、 によって提供される範囲全体を使用するわけではありません。Int64-9223372036854775808Int64TimeSpanDateTime

いいえ、 の長さmyResultは常に同じとは限りませんが、1 から 20 の範囲である可能性があります。それは、 の現在の値に依存しますConvert.ToInt64(ts.TotalSeconds)

于 2010-12-11T07:11:45.270 に答える
0

TimeSpan の最大サイズを取得するには、次のコードを使用してみてください。

var maxValue = Convert.ToInt64(TimeSpan.MaxValue).ToString();

あなたの質問に役立つことを願っています!幸運を!

よろしく、ディマ。

于 2010-12-11T07:15:06.630 に答える