java Calendar日期处理,代码如下:
package hk.com.cre.process.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.springframework.util.StringUtils;
/**
* 日期处理工具类
* @author ouyangjun
*/
public class SomeDateUtils {
// 日期处理格式
public static String DATE_PATTERN_YYYYMMDD = "yyyy-MM-dd";
/**
* 把日期转成字符串格式
* @param date
* @return
*/
public static String formatDateYYYYMMDD(Date date) {
SimpleDateFormat timeFt = new SimpleDateFormat(DATE_PATTERN_YYYYMMDD);
String timeStr = (date == null ? "" : timeFt.format(date));
return timeStr;
}
/**
* 某年第一天
* @param year
* @return
*/
public static String getFirstDayOfYear(int year) {
return getFirstDayOfQuarter(year, 1);
}
/**
* 某年最后一天
* @param year
* @return
*/
public static String getLastDayOfYear(int year) {
return getLastDayOfQuarter(year, 4);
}
/**
* 某年某季度第一天
* @param year
* @param quarter
* @return
*/
public static String getFirstDayOfQuarter(int year, int quarter) {
int month = 0;
if (quarter > 4) {
return null;
} else {
month = (quarter - 1) * 3 + 1;
}
return getFirstDayOfMonth(year, month);
}
/**
* 某年某季度最后一天
* @param year
* @param quarter
* @return
*/
public static String getLastDayOfQuarter(int year, int quarter) {
int month = 0;
if (quarter > 4) {
return null;
} else {
month = quarter * 3;
}
return getLastDayOfMonth(year, month);
}
/**
* 某年某月的第一天
* @param year
* @param month
* @return
*/
public static String getFirstDayOfMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
return formatDateYYYYMMDD(c.getTime());
}
/**
* 某年某月的最后一天
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
return formatDateYYYYMMDD(c.getTime());
}
/**
* 某一年周的总数
* @param startDate: yyyy-MM-dd
* @param endDate: yyyy-MM-dd
* @return
*/
public static int getMaxWeekNumOfYear(String startDate, String endDate) {
if(!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
SimpleDateFormat timeFt = new SimpleDateFormat(DATE_PATTERN_YYYYMMDD);
try {
Date start = timeFt.parse(startDate);
Date end = timeFt.parse(endDate);
Calendar cal=Calendar.getInstance();
cal.setTime(start);
long time1=cal.getTimeInMillis();
cal.setTime(end);
long time2=cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
Double days=Double.parseDouble(String.valueOf(between_days));
if((days/7)>0 && (days/7)<=1){
//不满一周的按一周算
return 1;
} else if(days/7>1){
int day=days.intValue();
if(day%7>0){
return day/7+1;
}else{
return day/7;
}
}else if((days/7)==0){
return 0;
}else{
//负数返还null
return 0;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return 0;
}
/**
* 某年某周的第一天
* @param year
* @param week
* @return
*/
public static String getFirstDayOfWeek(int year, int week) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//设置周一
c.setFirstDayOfWeek(Calendar.MONDAY);
return formatDateYYYYMMDD(c.getTime());
}
/**
* 某年某周的最后一天
* @param year
* @param week
* @return
*/
public static String getLastDayOfWeek(int year, int week) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week);
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
return formatDateYYYYMMDD(c.getTime());
}
/**
* 当前日期是几年第几周
* @return
*/
public static int getCurrentWeek() {
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);//设置周一为一周的第一天
cal.setTime(new Date());
return cal.get(Calendar.WEEK_OF_YEAR);
}
public static void main(String[] args) {
System.out.println("某年第一天: " + getFirstDayOfYear(2018));
System.out.println("某年最后一天 : " + getLastDayOfYear(2018));
System.out.println("某年某季度第一天: " + getFirstDayOfQuarter(2018, 2));
System.out.println("某年某季度最后一天: " + getLastDayOfQuarter(2018, 2));
System.out.println("某年某月的第一天: " + getFirstDayOfMonth(2018, 2));
System.out.println("某年某月的最后一天: " + getLastDayOfMonth(2018, 2));
System.out.println("某一年周的总数 : " + getMaxWeekNumOfYear(getFirstDayOfYear(2018), getLastDayOfYear(2018)));
System.out.println("某年某周的第一天: " + getFirstDayOfWeek(2018, 1));
System.out.println("某年某周的最后一天: " + getLastDayOfWeek(2018, 1));
System.out.println("当前日期: " + formatDateYYYYMMDD(new Date()) + ", 本年第" + getCurrentWeek() + "周");
}
}
打印效果图:
本章完结,待续!
本文说明:该文章属于原创,如需转载,请标明文章转载来源