2015年7月10日金曜日

Calendar

カレンダークラスで日時などを指定する方法

・共通
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.setTimeZone(TimeZone.getDefault());

・毎日
例えば11時10分0秒なら、
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(Calendar.MINUTE, 10); //02などはいけるが、なぜか08以降はダメ。0不要か。
calendar.set(Calendar.SECOND, 0);
※時間指定のみなので、毎日となる。
※なお、秒を指定しないと1分程度遅れた。0秒指定で端末時間でジャスト起動。

・比較
各変数は、以下とする。
現在時刻:calendarNow
設定時刻:calendarSet
int num = calendarNow.compareTo(calendarSet);
if(num>0){
    Log.d("time","現在時刻が、設定時刻より進んでいる。");
}

・メソッドなど詳しく紹介しているサイト
http://www.techscore.com/tech/Java/JavaSE/Utility/8/
add  と roll の違いなど。

・翌日
今日のCalendar.DAY_OF_YEARがsetされているor最初から何も指定していないとして、
calendar.add(Calendar.DAY_OF_YEAR, 1);
すれば、翌日。
Calendar.DAY_OF_YEAR は一年のうちで、今日が何日目か。
なお年末でも大丈夫。

・時刻取得
get メソッドで取得。何もsetしてなければ、現在時刻を取ってくる。
int hour = calendarNow.get(Calendar.HOUR_OF_DAY);
※何かsetしていると、その設定したものを取ってくる。

・正確さ
秒まで指定しないと、1分くらい遅れた。(0秒指定で、分変わりジャスト)

・備考
calendar.set(Calendar.MINUTE, 5);
みたいに数字を書く。
たとえば05という風に書くと、08からなぜかエラー。

0 件のコメント: