web-dev-qa-db-ja.com

System.currentTimeMillisの長さ

System.currentTimeMillisは常に固定長の値を返します。私のWindowsCore2では、13桁の長さの値を返します。

そのAPIから:

現在の時刻をミリ秒単位で返します。戻り値の時間の単位はミリ秒ですが、値の粒度は基盤となるオペレーティングシステムによって異なり、それより大きくなる場合があることに注意してください。たとえば、多くのオペレーティングシステムは、数十ミリ秒の単位で時間を測定します。

20
anzaan

System.currentTimeMillis()は、エポックからのミリ秒数、つまり1970年1月1日のUTC午前0時からのミリ秒数を返します。

エポックからのミリ秒数が初めて10進数の13桁になった時期を確認できます。これはに起こった

2001年9月9日01:46:40.000 UTC(エポックから1'000'000'000'000ミリ秒)

また、前回エポックからのミリ秒数が小数点以下13桁になる時期を確認することもできます。これはに起こります

2286年11月20日17:46:39.999 UTC(エポックから9'999'999'999'999ミリ秒)

したがって、これら2つの日付の間、マシンに現在の時刻が正しく設定されていると仮定すると、関数は常に10進数の13桁の値を返します。

したがって、次の2世紀以上の間、戻り値が10進数の13桁であると仮定しても安全です。

43
Adam Zalcman

63桁の2進数を返します(実際には64ビットの符号付き数値であり、常に正であるため、最上位ビットが設定されることはありません)。先頭の桁の多くはゼロになります。これを10進数に変換すると、通常、先行ゼロはすべて破棄されます。そのため、小数点以下の桁数は異なります。

2
Tom Anderson