Calendar API:
Calendar calendar = Calendar.getInstance();
int year = calendar. get(Calendar.YEAR); //获取年;
int month = calendar. get(Calendar.MONTH); //获取月;
int date = calendar. get(Calendar.DATE); //获取天;
int hour = calendar. get(Calendar.HOUR); //获取小时;
int minute = calendar. get(Calendar.MINUTE); //获取分钟;
int second = calendar. get(Calendar.SECOND); //获取秒钟;
long millssecond = calendar. getTimeInMillis(); //获取毫秒
-------------------------------------------------------------------------------------------------------------------------
int hour_of_day = calendar. get(Calendar.HOUR_OF_DAY); //第几个小时,
int day_of_month = calendar. get(Calendar.DAY_OF_MONTH); //这天,在一个月内是第几天.
int day_of_week = calendar. get(Calendar.DAY_OF_WEEK)-1; //这天,在一周内,是第几天. 因为按中国礼拜一作为第一天所以这里减1
int day_of_year = calendar. get(Calendar.DAY_OF_YEAR); //这天,在一年内,是第几天。
int week_of_year = calendar. get(Calendar.WEEK_OF_YEAR); //这周,在一年内是第几周;
int week_of_month = calendar. get(Calendar.WEEK_OF_MONTH); //这周,在这个月是第几周;以以星期为标准;
在当前日期上添加天数
Calendar cal = Calendar.getInstance();
cal. add(Calendar.DATE, 30);// 30为增加的天数,可以改变
Date d = cal.getTime();
在当前日期上减去天数
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-2);
Date newDate = calendar.getTime();
系统当前时间毫秒数转换为Timestamp,再转换为Calendar:
calendar.setTime(new Timestamp(System.currentTimeMillis()));
或者,将当前时间Date类型直接转换为Calendar:
calendar.setTime(new Date());
实际应用:
1、获取本周第一天的日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int order_of_curDay = calendar.get(Calendar.DAY_OF_WEEK)-1;
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-order_of_curDay+1);
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sf.format(calendar.getTime());
2、将Unix时间戳转换为标准格式的时间格式
Unix时间戳其实就是时间的毫秒数,因此可以利用Timestamp类来解决这个问题。
String unixTime = "1447896343843";
Long time = Long.valueOf(unixTime);
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Timestamp(time));
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sf.format(calendar.getTime()));
3、对于业务中常遇到的需求:将当前系统时间与数据库中获取到的时间比较,获得时间差。
可按下面步骤解决:
利用上面的方法将系统当前时间毫秒数和数据库获取到的Timestamp或Date转换为Calendar;
通过Calendar类的getTimeInMillis()方法,得到各自的long类型的毫秒数;
两者相减得到时间差;
毫秒数转换为天数,需要除以1000*3600*24。