Java CDLC 1.0 での日付計算
CLDC(携帯向けJava)での日付計算がうまくいきません。
JavaのSEでは、Calender.addなる日付計算関数があるようですが、
CLDC(携帯向けJava)では使えないみたいなので、以下の実験コードを
書いてみました。しかし、意図する結果が得られませんでした。
このケースでのよい計算方法をご存知でしたらご教授
頂ければうれしく思います。または、
以下のプログラムのバグ、ポカアホミス、作法的要修正点、
日付計算仕様的な可能/不可能等お気づきありましたら、
ご指摘頂ければ嬉しいです。
尚、意図した結果とは、下記の★部分において、
1970年1月1日(?曜日) 0:1:0 です。
グリニッジ標準時 1970 年 1 月 1 日 0:00:00 (エポック) からの
経過時間が、60000ミリ秒(60秒) というのを期待しました。
--以下コード--
void print_cal(Calendar cal){
String WEEK=" 日月火水木金土";
int year =cal.get(Calendar.YEAR);
int month =cal.get(Calendar.MONTH)+1;
int day_of_month=cal.get(Calendar.DAY_OF_MONTH);
int day_of_week =cal.get(Calendar.DAY_OF_WEEK);
int hour =cal.get(Calendar.HOUR_OF_DAY);
int minute =cal.get(Calendar.MINUTE);
int second =cal.get(Calendar.SECOND);
System.out.println("" + year + "/" + month + "/" + day_of_month + "(" + WEEK.charAt(day_of_week) + ") " + hour + ":" + minute + ":" + second);
}
Calendar cal = Calendar.getInstance();
long now = cal.getTime().getTime();
print_cal(cal);
cal.set(Calendar.YEAR, 2007);
cal.set(Calendar.MONTH, Calendar.MAY);
cal.set(Calendar.DAY_OF_MONTH, 31);
cal.set(Calendar.HOUR_OF_DAY, 6);
cal.set(Calendar.MINUTE, 12);
cal.set(Calendar.SECOND, 44);
print_cal(cal); //<---- 2007/5/31(木) 6:12:44
long time1 = cal.getTime().getTime();
cal.set(Calendar.YEAR, 2007);
cal.set(Calendar.MONTH, Calendar.MAY);
cal.set(Calendar.DAY_OF_MONTH, 31);
cal.set(Calendar.HOUR_OF_DAY, 6);
cal.set(Calendar.MINUTE, 13);
cal.set(Calendar.SECOND, 44);
long time2 = cal.getTime().getTime();
print_cal(cal); //<------ 2007/5/31(木) 6:13:44
long sabun = time2 - time1; //<---- 60000
Date hoge = new Date(sabun);
long hoge_time = hoge.getTime();
System.out.println(hoge_time); <--- 60000
//setTime: Calendar の現在の時刻を、指定された Date に。
cal.setTime(hoge);
//★この時点でprint_cal。
print_cal(cal); <---- 1970/1/1(木) 9:1:0 ?9時間も経ってる?
long now2 = cal.getTime().getTime();
System.out.println("now2: " + now2); <--- 60000。でも60秒がはいってるぽい
--コード以上--
お礼
ありがとうございました。