之前每次用到日期类型特别是需要算周几时,都是自己写算法根据时间去计算,然后拿来使用,直到我接触到了JDK 中Calendar的类,里面已经写好了很多日期的处理方法,现在来分享一下。
Calendar 类的简介
具体的可以上JDK的官网文档上面有详细的说明,该类是一个继承Object的抽象类,其中的构造方法是protected修饰,所以对外提供了getInstance()的方法,在这个方法中可以传入所需要的地址编号或者是时区编号,也可以都传,就可以获取到了Calendar 的实例。
该类中提供了很多属性,既有时间又有DAY_OF_YEAR (可以计算出当前日期是当前年中第几天),还有月份、时间等等。
举个例子计算某个日期是星期几(或者是某个时区的某个日期是星期几)
public class CalendarUtil {
public static int judgeDay(TimeZone zone,
Locale aLocale) {
/**
* 不传参则按照当前的时区和地址来获取日期
* Calendar calendar = Calendar.getInstance();
*/
Calendar cal = Calendar.getInstance(zone, aLocale);
return cal.get(Calendar.DAY_OF_WEEK);
}
public static void main(String[] args) {
//CTT代表上海
TimeZone timeZone = TimeZone.getTimeZone("CTT");
int rest = CalendarUtil.judgeDay(timeZone, Locale.CHINESE);
System.out.println(getWeek(rest));
}
public static String getWeek(int day) {
String result = "";
switch (day) {
case 1:
result = "SUNDAY";
break;
case 2:
result = "MONDAY";
break;
case 3:
result = "TUESDAY";
break;
case 4:
result = "WEDNESDAY";
break;
case 5:
result = "THURSDAY";
break;
case 6:
result = "FRIDAY";
break;
case 7:
result = "SATURDAY";
break;
}
return result;
}
}
通过上述的代码就可以很简单的获取到不同的时区不同地址具体时间是周几。
不清楚地区时区的可以看下图,Locale中有很多地址,英国、法国、德国、意大利、中国…
具体的时区ID可以进到ZoneId类中查看,当然也可以Google,度娘。