System.currentTimeMillis
は常に固定長の値を返します。私のWindowsCore2では、13桁の長さの値を返します。
そのAPIから:
現在の時刻をミリ秒単位で返します。戻り値の時間の単位はミリ秒ですが、値の粒度は基盤となるオペレーティングシステムによって異なり、それより大きくなる場合があることに注意してください。たとえば、多くのオペレーティングシステムは、数十ミリ秒の単位で時間を測定します。
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桁であると仮定しても安全です。
63桁の2進数を返します(実際には64ビットの符号付き数値であり、常に正であるため、最上位ビットが設定されることはありません)。先頭の桁の多くはゼロになります。これを10進数に変換すると、通常、先行ゼロはすべて破棄されます。そのため、小数点以下の桁数は異なります。