私はJava7プロジェクトで作業しており、国際原子時計ではタイムスタンプが必要です。しかし、私は苦労してるJava 7で国際原子時計を取得する方法
How to get GPS Time and TAI time in Java?
http://www.coderanch.com/t/549178/java/java/TAI-Atomic-Time-International
:私は、JSR-310および(JSR-310を実装している)ThreeTenプロジェクトに、この、その点に関連するいくつかの他の質問を見つけましたJava 7に何を使用するか、どこから入手するかを正確に検討してください。 ThreeTen用のGitHubページ、OpenJDKページなど、古いSourceForgeのようです。&
私はJava 7バックポートを見つけましたが、これをMavenからダウンロードした後、実際に必要なTAIInstantクラスは含まれていません(TIAInstantクラスはjavax.timeのThreeTen SourceForge JavaDocにリストされています)。 .TAIInstant)。完全のために
、これは私のpom.xmlからの抜粋です:
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>0.8.1</version>
</dependency>
私は何か他のものを使用する必要があり、どこからそれを取得する必要がありますか?
注:申し訳ありませんが、私が言及しているすべてのページへのリンクを提供することができません、StackOverflowは、より高い担当者なしで投稿あたり2以上のリンクを持つことはできません。
[EDIT] TAIを望む理由はそれ
が飛躍気にしないので、私は、私はTAIも正&負のうるう秒の両方の間に(満たして信じて単調に増加しているタイムスタンプを、必要があるということです 秒
は、すべての秒を均等にカウントします(うるう秒も含みます)。
さまざまなソースからPOSIX/Unixの時間を読んだところ、うるう秒以上のUnix Timeで何が起こっているのかはまだ分かりません。 Unix TimeはUTC Timeを参照する点ではあいまいですが、うるう秒が発生した瞬間にUnix Timeで何が起きるのかは不明です。 Unix Timeは「一時停止」するか、たとえば後方に移動しますか?そしてもっと重要なのは、たとえUnix Timeの仕様に従ってはならないとしても、Unixの実装は実際にうるう秒に関する仕様に従っているのだろうか?
最後に、System.currentTimeMillis()はPOSIX Time(秒よりもむしろミリ秒ではありますが)に相当すると言っていますか?
注意、JVMとマシン間で移植可能なオブジェクトが必要です(System.nanoTime()などを除く)。すなわち -
[結論]
TAI
TAIは、毎秒をカウントし、 'すべての秒が等しい' ている時間を測定するシステムです。 1秒ごとに同じ期間が構成され、すべての秒(閏秒を含む)が合計でカウントされます。これは、TAIの任意の開始点から数えた秒数(Unix Epochなど)が単調に増加する整数であることを意味します。
POSIX時間はPOSIXタイムの時間を測定するための標準(NOT実装)です。毎日正確に86400秒と定義しています。したがって、POSIX時間は閏秒をカウントしません(時には1分が61秒を超え、86400秒を超える日につながり、理論的には1分が59秒になり、< 86400秒の日数になります)。これは、POSIXの '秒'には可変長があり、閏秒の直前/直後/後にPOSIXクロックが秒をスキップするか、またはそれらを繰り返すことを意味します。具体的には、Meno Hochschildによって参照されているPOSIX仕様では、「実際の時刻と、Epochからの秒の現在の値との関係は不明です。
UTC
UTCは、太陽の位置及び(閾値以内)時刻との間の関係を維持することを目指し、地球が太陽の周りを移動する方法に関連する時間基準です。つまり、地球のUTC + 0地域では、太陽は常に正午UTC時に最高です。地球の回転速度は固定されておらず、予測可能な方法で変動しない(閏秒がいつ必要になるかを予測することができないか、閏秒が正かどうか、
時間を表す負のうるう秒)
TAIとPOSIXの両方が、「秒のカウント」の表現があるように私には思える(すなわち、実際に店舗へのコンピュータのための簡単なもの)、UTCは「人間であるのに対し通常はコンピュータによって内部的に記憶されていない時間(すなわち、年/月/日時:分:秒。ミリ秒)の「解釈」である。
翻訳タイムズ
上記を考えると、(カウントうるう秒と)TAIにPOSIX(カウントされたうるう秒無し)から翻訳する多くの問題があります。
- それはテーブルを維持することが必要です/ POSIX時間をTAI時間に変換するためのうるう秒の数
- ポイント1が処理されても、上記のようなPOSIX仕様では何が起こるかについての保証はありません中にうるう秒があるので、正確に言及する方法
- 明確な時間をntingすることはシステムの数は、それらの間のタイムスタンプを渡し、通信する必要がある場合、我々はうるう秒のテーブル/カウントは一方
一貫性が保たれることを保証しなければならない、変換するのは簡単ですPOSIXからUTCの「人間の解釈」までそれは閏秒の知識を必要としません。なぜなら、毎日の秒数が同じであると仮定しているからです(実際には、これらの秒のうちのいくつかの時間が異なっています)。実際には、POSIX Specの式の逆数を使って、UTCのさまざまな時間成分を取得するだけです(もう一度、Meno Hochschildが参照するPOSIX仕様を参照してください)。
[ThreeTen SourceForgeの(http://sourceforge.net/apps/mediawiki/threeten/index.php?title=ThreeTen) [ThreeTen GitHubの(http://threeten.github.io/) [ThreeTen OpenJDKの(http://openjdk.java.net/projects/threeten/) [javax.time.TAIInstantのJavadocにSourceForge](http://threeten.sourceforge.net/apidocs/index.html?javax/time/TAIInstant.html) – asibs
もっと修正して説明しました。それが役に立てば幸い。 –