タイトルが示すように、TAI秒の数字がの00:00:00 UTC、Januaryから見つかるはずです2004年1月(Java版)私はちょうどTAIが何であるかをちょうど学びました。そして、上記を試してみる私の試みは私をちょっと混乱させました。Javaで2004年1月1日00:00:00 UTC以来のTAI秒の数を調べる
を私はJavaであなたは1月1日、1970 UTC(Javadocs)からのミリ秒数を取得するためにSystem.currentTimeMillis()
を使用することができます知っている:私が試した何
。
また、原子時間についての私の短い研究から、私は現在TAIがUTCよりも37秒早いことを理解しています。
したがって、私の思考プロセスをすることでした:
- は
- (34歳)1970年から2004年の間の秒数を検索し、現在のUTC時刻からの数を取得することを差し引き2004年
- 37を追加する
TAIに秒の実際の数を取得するために、私はここに数学の一定ではなかった(1日= 86400秒):
- オプション1:86400(秒)365.25(日(1 Julian Year))をX = 1072958400
- オプション2(年)34×:86400(秒)365(日(1 Common Year))をX(年)34をX =この時点で
1072224000私はUTCに比較するときTAIに追加37うるう秒はうるう年を考慮していたかどうかを疑問始めたので、私はオプション2を使用する必要があります。残念ながら、私の思考プロセスが正しいかどうかは不明ですし、確かめるためにここで質問するほうがよいと思いました。
また、私は(秒)午前12:00(UTC) @2004年1月1日と同等であることを主張しthis citeを見つけました。どちらが私の計算のどちらかと同じではないので、私を投げ捨てた。
。したがって、オプション2を使用することは正しい選択ではありません。毎年0.25を加算することも正確ではありません。これは、四半期がUTCに実際に追加されるのではなく、1日に累積されるときだけです。 – Mordechai
'((currentDate()。getTime() - startOf2004.getTime())/ 1000)+ 37'のようなことはできませんか? 'java.util.Date#getTime()'は、その時刻のEpochからのミリ秒を返します。 –
365または365.25のいずれかで掛けるのは近似値です。 1970年から2004年までの34年間があり、そのうちの8つはうるう年であり、12,418日間に及ぶ。 –