您的位置:首页 > 编程语言 > Java开发

java时间处理Calendar使用小记

2017-02-04 15:51 381 查看
我理解Calendar类主要对于获取某些特定特殊的时间时特别方便,比如月的最后一天,月的某一个星期,星期的某一天,年的某一天等等,并且和date类相互可以转换

注意: Calendar.MONTH 的值是从0-11表示12个月

JANUARY   0

FEBRUARY  1

MARCH     2

APRIL     3

MAY       4

JUNE      5

JULY      6

AUGUST    7

SEPTEMBER 8

OCTOBER   9

NOVEMBER  10
DECEMBER  11

/**
* 取得当天0点时间 2017-02-04 00:00:00
* @return 毫秒级时间戳
*/
public static long getDayZero(long date) {
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);
//取得当天的起始时间
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);

//取得当天的结束时间
calendar.add(Calendar.DATE,1);
calendar.add(Calendar.MILLISECOND,-1);

return calendar.getTimeInMillis();
}

/**
* 入参时间所在月份的第一天
* @param date 入参时间 毫秒
* @return
*/
public static long getFirstDayOfMonth(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

calendar.set(Calendar.DAY_OF_MONTH,1);
//可以设置当天的起始时间或者结束时间
//起始时间 0点0分0秒0毫秒
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);

//结束时间 23点59分59秒999毫秒
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,59);
calendar.set(Calendar.SECOND,59);
calendar.set(Calendar.MILLISECOND,999);
return calendar.getTimeInMillis();
}
/**
* 入参时间所在月份的最后一天 有很多方式实现
* @param date 入参时间 毫秒
* @return
*/
public static long getLastDayOfMonth(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

/*---------------------------------------------*/
//当前时间月份加一,设置天是月份的第一天,再减一天就是当月的最后一天
calendar.add(Calendar.MONTH,1);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.add(Calendar.DATE,-1);

//可以设置当天的起始时间或者结束时间
//起始时间 0点0分0秒0毫秒
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
/*--------------------如果不关心具体时间也可以根据毫秒减一获得-------------------------*/

calendar.add(Calendar.MONTH,1);
calendar.set(Calendar.DAY_OF_MONTH,1);
//设置为当天的起始时间 0点0分0秒0毫秒 ,再将时间减掉一毫秒
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
calendar.add(Calendar.MILLISECOND,-1);

return calendar.getTimeInMillis();
}
/**
* 入参时间上个月份的最后一天
* @param date 入参时间 毫秒
* @return
*/
public static long getPreviousMonthLastDay(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

calendar.set(Calendar.DAY_OF_MONTH,0);

return calendar.getTimeInMillis();
}

/**
* 入参时间的前一天
* 获得当前时间的前几天,几分钟,几秒 直接使用 calendar.add()填写需要增加或者减少的属性 和值 即可
* @param date 入参时间 毫秒
* @return
*/
public static long getPreviousDay(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

calendar.add(Calendar.DATE,-1);
//calendar.add(Calendar.MONDAY,-1);
//calendar.add(Calendar.YEAR,-1);
//calendar.add(Calendar.HOUR,-1);
//calendar.add(Calendar.MINUTE,-1);
//calendar.add(Calendar.SECOND,-1);
//calendar.add(Calendar.MILLISECOND,-1);

return calendar.getTimeInMillis();
}

/**
* 入参时间是当月的第几个week
* @param date
* @return
*/
public static int getWeekOfMonth(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

return calendar.get(Calendar.WEEK_OF_MONTH);
}

/**
* 入参时间是当年的第几个week
* @param date
* @return
*/
public static int getWeekOfYear(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

return calendar.get(Calendar.WEEK_OF_YEAR);
}

/**
* 入参时间是当年的第几天
* @param date
* @return
*/
public static int getDayOfYear(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

return calendar.get(Calendar.DAY_OF_YEAR);
}

/**
* 入参时间是当月的第几天
* @param date
* @return
*/
public static int getDayOfMonth(long date){
Calendar calendar = Calendar.getInstance();
//设置为入参时间
calendar.setTimeInMillis(date);

return calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* 获取前N个月的起始时间,n为0表示当前月,1表示前一个月
* @param n
* @return 单位毫秒
*/
public static long getLastNMonthStartTime(int n) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.MONTH, 0 - n);
return calendar.getTimeInMillis();
}
/**
* 获取前N个月的终止时间,n为0表示当前月,1表示前一个月
* @param n
* @return 单位毫秒
*/
public static long getLastNMonthEndTime(int n) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.MONTH, 0 - n + 1);
calendar.add(Calendar.MILLISECOND ,-1);
return calendar.getTimeInMillis();
}
public static void main(String[] args){
System.out.println(DateTimeUtil.getDateTimeString(getDayZero(System.currentTimeMillis())));
System.out.println(getWeekOfMonth(System.currentTimeMillis()));
System.out.println(getWeekOfYear(System.currentTimeMillis()));
System.out.println(getDayOfMonth(System.currentTimeMillis()));
System.out.println(getDayOfYear(System.currentTimeMillis()));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Calendar java