正如標題所述,我需要找到自1:00 UTC,1月1日00:00:00開始的TAI秒的編號2004年1月(Java版)。我最近才知道TAI是什麼,並且我試圖解決上述問題讓我感到困惑。查找自從00:00:00 UTC,2004年1月1日起以Java記錄的TAI秒數
我已經試過什麼:
我知道在Java中,你可以使用System.currentTimeMillis()
獲得自1月1日的毫秒數,1970年UTC(Javadocs)。
此外,從我對原子時間的簡短研究中,我瞭解到目前TAI正好比UTC快37(閏秒)秒。
因此,我的思維過程是:
- 查找秒1970年和2004年之間(34歲)
- 減去從當前UTC時間的數量來獲得的數量自2004年以來
- 添加37獲得在TAI
的的實際秒數我不能確定這裏的數學(1天= 86400秒):
- 選項1:86400(秒)×365.25(天(1 Julian Year))×34(歲)= 1072958400
- 選項2:86400(秒)×365(天(1 Common Year))×34(歲)= 1072224000
在這一點上,我開始質疑比較UTC時加入到TAI 37閏秒是否考慮閏年,因此我應該使用選項2。不幸的是,我不確定我的思維過程是否正確,我認爲在這裏要求確定一下會更好。
另外,我發現this cite聲稱(秒),相當於01/01/2004 @上午12:00(UTC)。哪種讓我失望,因爲它不等於我的任何一次計算。
上的飛躍__year__計算在二月額外的一天,當你可能會越來越偏離軌道。因此使用選項2不是正確的選擇。每年添加0.25也不準確,因爲季度日只有在積累到一整天時才真正添加到UTC。 – Mordechai
難道你不能只是做'((currentDate()。getTime() - startOf2004.getTime())/ 1000)+ 37'嗎? 'java.util.Date#getTime()'爲您提供自那時以來Epoch以來的毫秒數。 –
乘以365或365.25只是近似值。從1970年到2004年有34年,其中8年是閏年,達到12,418天。 –