日付や時刻は「UTC ミリ秒値で表される現在時刻」で扱うのが便利
日付や時刻を扱う際に、どういう形式(データ)で持つかは
悩ましい問題だったりします。
毎度、管理人イガジーです。
年月日を 20121228 などの整数値で持つのもひとつの手です。
100で割った余りが日にち、10000で割った商が年、
10000で割った余りを100で割った商が月、などですね。
割と手軽です。
ただ、2つの日付の差が何日あるかの計算や、
変な入力値(2月30日など)があるとすると、その処理は面倒になります。
オススメは「UTC ミリ秒値で表される現在時刻」です。これは
1970年1月1日GMT午前0時0分(日本時間だと午前9時)を0として
そこからの経過時間をミリ秒(ms)でカウントしたもの(long値)です。
System.currentTimeMillis();
または
Calendar cc=new GregorianCalendar(); として
cc.getTimeInMillis();
で得ることができます。
このミリ秒時刻を、逆に通常の日付・時刻にするには Calendar cc に対して
cc.setTimeInMillis(ミリ秒単位の時刻long値);
とすると、あとは普通のカレンダアクセスと同様に
cc.get(Calendar.YEAR)); // 年
cc.get(Calendar.MONTH); // 月(0始まりなので+1する)
cc.get(Calendar.DAY_OF_MONTH); // 日にち
cc.get(Calendar.HOUR_OF_DAY); // 時 hour
cc.get(Calendar.MINUTE); // 分
cc.get(Calendar.SECOND); // 秒
とすると、それぞれの値が得られます。
2つのミリ秒単位の時刻があった時に、その差をとって
1000 で割れば、秒単位の時間差
1000*60*60 で割れば、時間差
1000*60*60*24 で割ると、日にち差
が得られます。
これを使ってカウントダウン表示するJavaアプリを作る例は
→こちらを参照してください。
今年1年、ご愛読ありがとうございました。
来年がみなさまにとって良き年になりますように。
この記事へのコメントはこちら