- ベストアンサー
時刻を表示する方法とは?
- 時刻を表示するためには、TimeZoneやcalendarなどの方法がありますが、最も望ましい方法は何でしょうか。
- 表示したい時刻はyy/MM/dd kk:mmの形式で、軽く確認できる程度の情報を含めたいです。
- 時刻の更新方法については、タイマーやスレッドなどの方法がありますが、具体的な記述方法やファイルの統合方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1つのjavaファイルに纏めるのはあまりしない方がいいのかもしれませんが public class Test{ public static void main(String[] args) { TestThread t1 = new TestThread(); t1.start(); } } class TestThread extends Thread{ public void run(){ // } } と1つのjavaファイルに2つクラスを書いたり public class Test{ public static void main(String[] args) { Thread t1 = new Thread() { public void run() { //処理 } }; t1.start(); } } でいけます。 ずれるかどうかは、たぶんですが、一時間も経てばかなり気になるくらいずれるんだと思います。(ずれないなら60000ミリ秒で更新するだけでいいですが・・) System.currentTimeMillis()はコンピュータの時刻だったと思うので正確だと思います。がThread.sleep(long)はずれると聞いた気がします・・。この辺はあまり自信ありません・・ さっきの方法は一応、スレッド内でThread.sleep(1000)で約一秒待って、正確なSystem.currentTimeMillisを取得し、分をチェックするという方法なら大丈夫かなと・・ 60回目のチェックで分の数字が進むか分からないですが59回目でも61回目でも、コンピュータの分が進んだのを確認して表示を更新するという方法です。
その他の回答 (1)
- hdnssd
- ベストアンサー率100% (2/2)
Calendarが簡単だと思います。 Calendar cal = new GregorianCalendar(); cal.setTimeInMillis(System.currentTimeMillis()); で現在時刻のカレンダーになります。 int minute = cal.get(Calendar.MINUTE); で今何分なのか分かります。年月日も同じ感じです。 更新はこの値を取っておいてスレッドで1秒おきにSystem.currentTimeMillis()の値をcalにsetし直して if(minute != cal.get(Calendar.MINUTE)){ //表示 minute = cal.get(Calendar.MINUTE); } とかでどうでしょう。無駄なチェックが59回起こることになりますが・・・
補足
回答有難うございます。 一応カレンダーで行ってみようと思います。 申し訳ありませんがもう一つ質問です。 #スレッドに関しては別の*.javaで定義しなければなりませんか? ミリ秒で取得した場合、ズレ等は気にならない程度になりますか?
お礼
回答有難う御座いました。 以上を参考にして作成してみようと思います。
補足
回答有難うございます。 お返事が遅くなってしまい申し訳ありません。 確かに纏めるのは良くないかもしれないですね・・・。 別クラスでの定義の方も考えていこうと思います。 時刻のズレについてですが、一度プログラムを作って自分の目で確認してみようと思います。 あと、今回回答して下さってた答えで、mainの中に書かれてますが これをjLabel等に書き込む場合はstaticなので書き込めないですよね? そういう場合はどう対処すればいいのでしょうか。 申し訳ありませんが、再度ご指南宜しく御願い致します。