package com.handsomezhou.futurerecenttimeselect.util;
//import android.util.Log;
import android.util.Log;
import com.handsomezhou.futurerecenttimeselect.model.TimeItemIndex;
public class TimeItemUtil {
public static final String TAG="TimeItemUtil";
public static final int MINUTE_MIN_APPOINTMENT_TIME = 0;//0 minute
public static final int DAY_START_VALUE=0; //the today value
public static final int DAY_INTERVAL=1; //1day
public static final int DAY_WHEEL_VIEW_ITEMS=60;
private static final int TODAY_WHEEL_VIEW_INDEX=1;// index in day wheel view
public static final int HOUR_START_VALUE=0; //the first value of hour
public static final int HOUR_INTERVAL=1; //1hour
public static final int HOUR_WHEEL_VIEW_ITEMS=24;
public static final int MINUTE_START_VALUE=0;//the first value of minute
public static final int MINUTE_INTERVAL=1;//1 minute
public static final int MINUTE_WHEEL_VIEW_ITEMS=60;
public static TimeItemIndex correctTheTimeItem(TimeItemIndex currentItemIndex){
TimeItemIndex correctTimeItemIndex=null;
do{
if(null==currentItemIndex){
break;
}
if(currentItemIndex.getDayItemIndex()!=TODAY_WHEEL_VIEW_INDEX){
break;
}
//Log.i(TAG,"timeItemValue:"+timeItemValue.getDayItemValue()+";"+timeItemValue.getHourItemValue()+";"+timeItemValue.getMinuteItemValue());
int minuteOfday=TimeUtil.getMinuteOfDay();
int systemMinuteOfDay=(minuteOfday/TimeItemUtil.MINUTE_INTERVAL+1)*(TimeItemUtil.MINUTE_INTERVAL)+TimeItemUtil.MINUTE_MIN_APPOINTMENT_TIME;
Log.i(TAG, "systemMinuteOfDay["+systemMinuteOfDay+"]");
int userMinuteOfDay=getMinuteOfDay(currentItemIndex);
Log.i(TAG, "userMinuteOfDay["+userMinuteOfDay+"]");
if(userMinuteOfDay>=systemMinuteOfDay){
//correctTimeItemValue=timeItemValue;
break;
}
correctTimeItemIndex=getTimeItemIndex(systemMinuteOfDay);
}while(false);
return correctTimeItemIndex;
}
public static long getTimeMillis(final TimeItemIndex timeItemIndex) {
long millis = System.currentTimeMillis();
do {
if (timeItemIndex.getDayItemIndex() == 0) {// now
break;
}
//note:It's necessary that System.currentTimeMillis behind TimeUtil.getMilliSecondOfDay().
long todayStartTimeMillis=(-(long)TimeUtil.getMilliSecondOfDay()+System.currentTimeMillis());
int daysRelativeTodayStartTime=(timeItemIndex.getDayItemIndex()- TimeItemUtil.TODAY_WHEEL_VIEW_INDEX)*TimeItemUtil.DAY_INTERVAL;
long daysRelativeTodayStartTimeMillis=((long)daysRelativeTodayStartTime)*TimeUtil.HOUR_PER_DAY*TimeUtil.MINUTE_PER_HOUR*TimeUtil.SECOND_PER_MINUTE*TimeUtil.MILLISECOND_PER_SECOND;
int hoursRelativeTodayStartTime=(timeItemIndex.getHourItemIndex()-0)*TimeItemUtil.HOUR_INTERVAL;
long hoursRelativeTodayStartTimeMillis=((long)hoursRelativeTodayStartTime)*TimeUtil.MINUTE_PER_HOUR*TimeUtil.SECOND_PER_MINUTE*TimeUtil.MILLISECOND_PER_SECOND;
int minutesRelativeTodayStartTime=(timeItemIndex.getMinuteItemIndex()-0)*TimeItemUtil.MINUTE_INTERVAL;
long minutesRelativeTodayStartTimeMillis=((long)minutesRelativeTodayStartTime)*TimeUtil.SECOND_PER_MINUTE*TimeUtil.MILLISECOND_PER_SECOND;
millis=todayStartTimeMillis+daysRelativeTodayStartTimeMillis+hoursRelativeTodayStartTimeMillis+minutesRelativeTodayStartTimeMillis;
/* Log.i(TAG, "todayStartTimeMillis "+todayStartTimeMillis);
Log.i(TAG, "daysRelativeTodayStartTime "+daysRelativeTodayStartTime);
Log.i(TAG, "daysRelativeTodayStartTimeMillis "+daysRelativeTodayStartTimeMillis);
Log.i(TAG, "hoursRelativeTodayStartTime "+hoursRelativeTodayStartTime);
Log.i(TAG, "hoursRelativeTodayStartTimeMillis "+hoursRelativeTodayStartTimeMillis);
Log.i(TAG, "minutesRelativeTodayStartTime "+minutesRelativeTodayStartTime);
Log.i(TAG, "minutesRelativeTodayStartTimeMillis "+minutesRelativeTodayStartTimeMillis);
Log.i(TAG, "millis "+millis);
*/
break;
} while (false);
return millis;
}
private static int getMinuteOfDay(final TimeItemIndex timeItemIndex){
int minuteOfDay=((TimeItemUtil.HOUR_START_VALUE+timeItemIndex.getHourItemIndex()*TimeItemUtil.HOUR_INTERVAL)*(TimeUtil.MINUTE_PER_HOUR))+
(TimeItemUtil.MINUTE_START_VALUE+timeItemIndex.getMinuteItemIndex()*TimeItemUtil.MINUTE_INTERVAL);
return minuteOfDay;
}
private static TimeItemIndex getTimeItemIndex(int minuteOfDay){
TimeItemIndex timeItemIndex=new TimeItemIndex();
timeItemIndex.setDayItemIndex(minuteOfDay/(TimeUtil.HOUR_PER_DAY*TimeUtil.MINUTE_PER_HOUR)/TimeItemUtil.DAY_INTERVAL+TODAY_WHEEL_VIEW_INDEX);
timeItemIndex.setHourItemIndex(minuteOfDay/TimeUtil.MINUTE_PER_HOUR%TimeUtil.HOUR_PER_DAY/TimeItemUtil.HOUR_INTERVAL);
timeItemIndex.setMinuteItemIndex(minuteOfDay%TimeUtil.MINUTE_PER_HOUR/TimeItemUtil.MINUTE_INTERVAL);
return timeItemIndex;
}
}