2

私はJavaがどこに行くのか疑問に思っています。システムに基づいて更新しますか、それともシステム時間がかかり、実行時にそこから移動します。

たとえば、java.util.Date を使用して時間をかけます。このクラスから時刻を取得するメソッドを呼び出すと、時刻はどこから来て、時刻を取得するための呼び出しに基づいて、システムからチェックされますか、それとも vm の内部クロックを呼び出しますか。

4

3 に答える 3

8

java.util.Date のコンストラクターを参照してください

public Date() {
    this(System.currentTimeMillis());
}
于 2013-05-23T16:07:30.643 に答える
3

javadocから右:

Date クラスは協定世界時 (UTC) を反映することを目的としていますが、Java 仮想マシンのホスト環境によっては正確に反映されない場合があります。ほぼすべての最新のオペレーティング システムでは、すべての場合で 1 日 = 24 × 60 × 60 = 86400 秒と想定されています。ただし、UTC では、1 ~ 2 年に 1 度、「うるう秒」と呼ばれる 1 秒が余分に発生します。うるう秒は常に 1 日の最後の 1 秒として追加され、常に 12 月 31 日または 6 月 30 日に追加されます。ほとんどのコンピューターの時計は、うるう秒の区別を反映できるほど正確ではありません。

一部のコンピューター標準は、協定世界時 (UT) に相当するグリニッジ標準時 (GMT) で定義されています。GMT は標準の「市民」名です。UT は同じ規格の「科学的」名称です。UTC と UT の違いは、UTC が原子時計に基づいていることと、UT が天文観測に基づいていることです。地球の自転は一様ではないため (複雑な方法で減速および加速します)、UT は常に一様に流れるとは限りません。UTC を UT1 の 0.9 秒以内に保つために、必要に応じてうるう秒が UTC に導入されます。UT1 は、特定の修正が適用された UT のバージョンです。他の時間と日付のシステムもあります。例えば、衛星ベースの全地球測位システム (GPS) で使用されるタイム スケールは UTC に同期されますが、うるう秒は調整されません。さらに興味深い情報源は、米国海軍天文台、特に時間局です。

http://tycho.usno.navy.mil

および「システム オブ タイム」の定義は次の場所にあります。

http://tycho.usno.navy.mil/systime.html

年、月、日、時、分、および秒の値を受け入れるか返すクラス Date のすべてのメソッドでは、次の表現が使用されます。

年 y は整数 y - 1900 で表されます。月は 0 から 11 の整数で表されます。0 は 1 月、1 は 2 月などです。したがって、11 は 12 月です。日付 (月の日) は、通常の方法で 1 から 31 までの整数で表されます。時間は 0 から 23 までの整数で表されます。したがって、午前 0 時から午前 1 時までは 0 時であり、正午から午後 1 時までは 12 時です。いつものやり方。秒は 0 から 61 までの整数で表されます。値 60 と 61 はうるう秒でのみ発生し、実際にうるう秒を正しく追跡する Java 実装でのみ発生します。うるう秒が現在導入されている方法のため、同じ分に 2 つのうるう秒が発生することはほとんどありません。ただし、この指定は ISO C の日付と時刻の規則に従います。すべての場合において、これらの目的でメソッドに指定される引数は、指定された範囲内に収まる必要はありません。たとえば、日付を 1 月 32 日と指定すると、2 月 1 日を意味すると解釈されます。

于 2013-05-23T16:08:40.810 に答える
2

それは基礎となるOSから来ており、従来のJVMは内部の実行クロック自体を保持していません

于 2013-05-23T16:07:51.307 に答える