package com.myqsc.mobile2.curriculum.uti;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by richard on 13-8-31.
*/
public class KebiaoUtility {
public final static String[] classFrom = new String[]{
"", "08:00", "08:50", "09:50", "10:40", "11:30", "13:15", "14:05", "14:55", "15:55", "16:45", "18:30", "19:20", "20:10"
};
public final static String[] classTo = new String[]{
"", "08:45", "09:35", "10:35", "11:25", "12:15", "14:00", "14:50", "15:40", "16:40", "17:30", "19:15", "20:05", "20:55"
};
/**
* 计算距离上课或下课的时间,下课时间为正,上课时间为负
* @param calendar
* @param list
* @return Map
*/
public static Map<Integer, Object> getDiffTime(Calendar calendar,
List<KebiaoClassData> list) {
if (list == null || list.size() == 0)
return null;
/**
* map 1:时间差, 2:课程节数,3:一节课对象
*/
final Map<Integer, Object> map = new HashMap<Integer, Object>();
List<Integer> course = new ArrayList<Integer>();
for(KebiaoClassData data : list) {
for (int i : data.classes)
course.add(i);
}
// LogHelper.i(calendar.toString());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
String date = simpleDateFormat.format(calendar.getTime());
for (int i = 0; i != course.size(); ++i) {
if (date.compareTo(classFrom[course.get(i)]) >= 0
&& date.compareTo(classTo[course.get(i)]) < 0) {
Calendar toCalendar = Calendar.getInstance();
toCalendar.set(Calendar.HOUR_OF_DAY,
Integer.parseInt(classTo[course.get(i)].substring(0, 2)));
toCalendar.set(Calendar.MINUTE,
Integer.parseInt(classTo[course.get(i)].substring(3, 5)));
toCalendar.set(Calendar.SECOND, 0);
map.put(1, (int) ((toCalendar.getTimeInMillis() - calendar.getTimeInMillis()) / 1000));
map.put(2, course.get(i));
break;
}
}
if (map.get(1) == null) {
for (int i = 0; i != course.size(); ++i) {
if (date.compareTo(classFrom[course.get(i)]) < 0) {
Calendar fromCalendar = Calendar.getInstance();
fromCalendar.set(Calendar.HOUR_OF_DAY,
Integer.parseInt(classFrom[course.get(i)].substring(0, 2)));
fromCalendar.set(Calendar.MINUTE,
Integer.parseInt(classFrom[course.get(i)].substring(3, 5)));
fromCalendar.set(Calendar.SECOND, 0);
map.put(1, (int) ((calendar.getTimeInMillis() - fromCalendar.getTimeInMillis()) / 1000));
map.put(2, course.get(i));
break;
}
}
}
if (!map.containsKey(2))
return null; //今天没有课
int course_num = (Integer) map.get(2);
for(KebiaoClassData data : list)
if (data.inRange(course_num))
map.put(3, data);
return map;
}
/**
* 输入一个课程对象,传出标准的“周一 6/7/8"这种格式的字符串
* @param kebiaoClassData
* @return
*/
public static String processClassTime(KebiaoClassData kebiaoClassData) {
final String[] week = {"", "周一", "周二", "周三", "周四", "周五", "周六", "周日"};
String string = week[kebiaoClassData.time];
for(int i : kebiaoClassData.classes) {
string += i + ", ";
}
string = string.substring(0, string.length() - 2);
try {
//添加上课下课时间
string += " (" + classFrom[kebiaoClassData.classes[0]] +
" - " + classTo[kebiaoClassData.classes[kebiaoClassData.classes.length - 1]] + ")";
}catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
return string;
}
public static String processTimeTitle(Calendar calendar) {
final String[] week = {"", "周日", "周一", "周二", "周三", "周四", "周五", "周六"};
String string = (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH);
string += " " + week[calendar.get(Calendar.DAY_OF_WEEK)];
return string;
}
}