前两天,学习自定义View画了一个时钟效果,用到了Calendar这个抽象类,针对日历时间的操作,属于Java常见类,在此记录一下简单的用法及意义。
获取日期
//获得Calendar这个类的实例:
private Calendar c = Calendar.getInstance();
//获得当前的年份
c.get(Calendar.YEAR)
//获得当前的月份
c.get(Calendar.MONTH) + 1)
注意:1月份的值为0,需加1为现实中月份
//获得今天是本月的第几天,两种写法
c.get(Calendar.DATE)
c.get(Calendar.DAY_OF_MONTH)
//获得今天是本年的第几天
c.get(Calendar.DAY_OF_YEAR)
//获得今天在本月的第几周
c.get(Calendar.DAY_OF_WEEK_IN_MONTH)
获取星期
//获得今天是周几
private void printDayOfWeek() {
switch (c.get(Calendar.DAY_OF_WEEK)) {
case Calendar.SUNDAY:
Log.i("zachary", "周日");
break;
case Calendar.MONDAY:
Log.i("zachary", "周一");
break;
case Calendar.TUESDAY:
Log.i("zachary", "周二");
break;
case Calendar.WEDNESDAY:
Log.i("zachary", "周三");
break;
case Calendar.THURSDAY:
Log.i("zachary", "周四");
break;
case Calendar.FRIDAY:
Log.i("zachary", "周五");
break;
case Calendar.SATURDAY:
Log.i("zachary", "周六");
break;
default:
break;
}
}
获取时间
//获得几点,12小时制
c.get(Calendar.HOUR)
//需要区分是上午还是下午
if (c.get(Calendar.AM_PM) == Calendar.AM) {
Log.i("MainActivityFilter", "现在是上午");
} else {
Log.i("MainActivityFilter", "现在是下午");
}
//使用Calendar.AM和Calendar.PM来帮助判断是上午还是下午
//获取24小时制时间的方法
c.get(Calendar.HOUR_OF_DAY)
//获得现在是几分
c.get(Calendar.MINUTE)
//获得现在是几秒
c.get(Calendar.SECOND)
//获得现在是几毫秒
c.get(Calendar.MILLISECOND)
输出、转化、对比
//SimpleDateFormat来输出规范的字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
sdf.format(c.getTime())
//增加日期中的某个域的值,比如想获得明天的日期,就需要向DAY域加1
c.add(Calendar.DAY_OF_MONTH, 1);
//比较两个日期是否相等
private Calendar c = Calendar.getInstance();
private Calendar d = Calendar.getInstance();
c.equals(d) //true
c.add(Calendar.YEAR, 1);
c.equals(d) //false
private Calendar c = Calendar.getInstance();
private Calendar d = Calendar.getInstance();
d.add(Calendar.DAY_OF_MONTH, 1);
//比较两个日期哪个更靠后
d.after(c)
//比较两个日期哪个更靠前
c.before(d));
清空某一个域并用这个域最小的值代替
c.clear(Calendar.MONTH);
清空所有的域然后全部用最小的值代替
//1970.1.1 00.00
d.clear();
//获得Calendar对象的一个深拷贝,独立于拷贝对象
d = (Calendar) c.clone();
sdf.format(d.getTime())
//比较两个Calendar哪个在前哪个在后的方法
//c实例要靠前一些,返回-1,如果要靠后一些,返回1,如果相等,返回0
d = (Calendar) c.clone();
c.compareTo(d)
//将当前Calendar对象转换为Date对象
c.getDate()
//还有将Date对象设置给Calendar对象的方法
c.setDate(Date date)