2010-12-11 20 views
4

私はこのタイムスタンプ文字列の長さ

// 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の最大文字列の長さとは何であり、それは常に同じ大きさであるをした場合は?

+0

なぜ知りたいですか? –

+0

@KarlKnechtelちょうどネオは、赤い丸薬または青い丸薬をとるかどうかを決めるためにウサギの穴がどのくらい離れているかを知る必要があるからです。 –

答えて

17

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

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

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

最大文字数を10文字とすると、-99999999から9999999999までのタイムスタンプの範囲が与えられます。これは、 "Mon、1966年10月31日14:13:21 GMT"から "Sat、20 Nov 2286 17:46:39 GMT"までの日付の範囲を指定します。私は下限の文字として否定記号を含めていることに注意してください。なぜなら、下限は上限よりもはるかにエポックに近いからです。

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

これは、最大のです。それはより短くなる可能性があります。

+0

完璧な答えですので、これらを使用して10桁のユニークIDを生成できます。これは、IDジェネレータを扱う際に便利です。そのIDはすでにIDであり、いつでも時刻に変換できるため、日付の値を格納する必要はありません。 –

4

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

例えば、今、その値が1292022273であるので、長さが10

だろうあなたは書式なしでConvert.ToInt64()に固執する場合はあなたがそれから、ここにhttp://www.timeanddate.com/date/duration.html

+0

いつも10になるのですか? – 001

+0

いいえ、私はいつか24世紀には9999999999秒を超え、11になると思います。だから私はあなたが「いつも」の意味に依存していると思います。あなたのコードはおそらくそれまでにはありません。 –

+7

24世紀私は死んでしまいます。そして確かに、この時間の前に誰かが問題を解決しました! – 001

1

秒を含んで電卓を見つけることができますInt64-9223372036854775808であるため、最大長はになります(負の符号は余分な文字が必要です)。しかしながら、実際には、TimeSpanおよびDateTimeの制限のためにInt64によって与えられる全範囲を利用することはない。

myResultの長さは必ずしも同じではありませんが、1から20の範囲で指定できます。現在の値はConvert.ToInt64(ts.TotalSeconds)です。 TimeSpanの最大サイズこのコードを使用してみてください取得するには

+0

技術的には、Int64が署名されていないので、最大長は20文字です。 ;) – AgentConundrum

+0

@AgentConundrum - あなたは正しいです。私は、Int64が* signed * ;-) –

+0

aaarghであるため、負の値を考慮した回答を更新しました。コメントを編集することができません。私は永遠に馬鹿に見えることになる! DOOOOMED! – AgentConundrum

0

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

は、それはあなたの質問のお手伝いを願っています!がんばろう!

よろしくお願いいたします。