タイムスタンプ文字列長
-
08-10-2019 - |
質問
私がこれをした場合
// 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の最大文字列長はどれくらいですか?それは常に同じサイズですか?
解決
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
. 。これにより、「1966年10月31日、月31日14:13:21 GMT」から「土、2286年11月20日17:46:39 GMT」までの日付が範囲になります。否定記号を下限のキャラクターとして含めていることに注意してください。そのため、下限が上限よりもエポックに非常に近い理由です。
1966年のハロウィーンの前または2286年11月下旬以降に日付を予想していない場合は、文字列の長さが10文字を超えないと合理的に想定できます。この範囲外(おそらく1966年以前ではなく1966年以前)を期待している場合は、11文字の文字列が表示されると予想されます。私はそれ以上期待していません。
それは 最大 期待する文字の数。短くなる可能性があります。
他のヒント
コードが将来的に使用されていると仮定すると、INT64の最大長になります。
たとえば、現在、その値は1292022273であるため、長さは10になります。
ここに秒を含む計算機を見つけることができます http://www.timeanddate.com/date/duration.html
あなたが固執するなら Convert.ToInt64()
フォーマットなしで、あなたの最大長は 20, 、最小値から Int64
は -9223372036854775808
(ネガティブサインには追加の文字が必要です)。ただし、実際には、提供される範囲全体を利用しません Int64
の制限のため TimeSpan
と DateTime
.
そして、いいえ、の長さ myResult
常に同じではありませんが、1〜20の範囲です。 Convert.ToInt64(ts.TotalSeconds)
.
タイムスパンの最大サイズを取得するには、このコードを使用してみてください。
var maxValue = Convert.ToInt64(TimeSpan.MaxValue).ToString();
それがあなたの質問に役立つことを願っています!幸運を!
よろしく、ディマ。