事前定義されたクラスやライブラリを使用せずに、Javaでシステムの現在の日付と時刻を取得するにはどうすればよいですか?私は実際に、java.util.DateまたはJava.util.Calendarとして自分のDateADTを最初から作成しています。しかし、システムの日付と時刻を取得する方法を見つけることができません。たとえば、誰かが現在の年齢に入った場合にその年齢を計算する方法を見つけることができません。ある意味で、DateまたはCalendarクラスの開発者が実際にどのように実装したかを知りたいと思います。java.utilパッケージで定義されているDateクラスとCalendarクラスのコードを確認する方法はありますか。
2 に答える
さてSystem.currentTimeMillis()
、入っていませんjava.util
-それはあなたが探していたものですか?次に、その値(UNIXエポックからのミリ秒)が年などで何を意味するかを理解するためのコードを作成する必要があります。また、タイムゾーンとカレンダーシステムを検討する必要があります。
楽しみのためでない限り、私は個人的にあなた自身の日付/時刻パッケージを書こうとしないでしょう。java.util.Date
/Calendar
はひどいですが、Joda Timeの方がはるかに優れており、次のJSR310があります。
java.utilパッケージで定義されているDateクラスとCalendarクラスのコードを確認する方法はありますか?
もちろん、JDKをインストールしたときに、標準ライブラリのソースコードのコピーもインストールするオプションが必要でした。通常はにありsrc.zip
ます。または、 openjdk.java.netにアクセスして、そこを確認することもできます。
実際、事前定義された関数はまったく使用したくありません。
次に、JNIを使用して、基になるシステムコールに到達する必要があります。これは、基本的には何をするかということなので、私にはかなり無意味に思えSystem.currentTimeMillis
ます。JNIを学習しようとしている場合は問題ありませんが、日付/時刻とはあまり関係がありません。
もちろん、*システム時刻ではなく正確な時刻に関心がある場合は、 NTPクライアントを実装できます。
System.currentTimeMillis()の使用:
現在の時刻と1970年1月1日UTCの午前0時の差をミリ秒単位で返します。
java.util.Date
およびのソースコードについては、 http://jdk7.java.net/source.htmljava.util.Calendar
から直接ソースをダウンロードするか、またはここでオンラインで表示できます。docjar.com