public class DateUtils {
private static Log logger = LogFactory.getLog(DateUtils.class);
public static String getFirstDayOfMonth(int year, int month) {
Calendarcal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, month - 1);
// 设置日历中月份的第1天
cal.set(Calendar.DAY_OF_MONTH, 1);
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String firstDayOfMonth = sdf.format(cal.getTime());
return firstDayOfMonth;
}
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, month);
// 设置日历中月份的最后1天
cal.set(Calendar.DATE, 0);
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String lastDayOfMonth = sdf.format(cal.getTime());
return lastDayOfMonth;
}
public static String getFirstDayOfYear(int year) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, 0);
// 设置日历中月份的第1天
cal.set(Calendar.DAY_OF_MONTH, 1);
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String firstDayOfYear = sdf.format(cal.getTime());
return firstDayOfYear;
}
public static String getLastDayOfYear(int year) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, 11);
// 设置日历中月份的最后1天
cal.set(Calendar.DATE, 0);
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String lastDayOfYear = sdf.format(cal.getTime());
return lastDayOfYear;
}
/**
* 获取当前月第一天
* @return
*/
public static String firstDayOfCurrentMonth(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();//获取当前日期
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
return sdf.format(cal.getTime());
}
/**
* 获取当前月最后一天
* @return
*/
public static String lastDayOfCurrentMonth(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();//获取当前日期
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
return sdf.format(cal.getTime());
}
public static String compareDate(String firstDate, String lastDate) {
String retDate = null ;
if(StringUtils.isEmpty(firstDate) && !StringUtils.isEmpty(lastDate)) {
return lastDate ;
}
if(!StringUtils.isEmpty(firstDate) && StringUtils.isEmpty(lastDate)) {
return firstDate ;
}
if(!StringUtils.isEmpty(firstDate) && !StringUtils.isEmpty(lastDate)) {
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date first = sdf.parse(firstDate) ;
Date last = sdf.parse(lastDate) ;
if(first.after(last)) {
return sdf.format(first) ;
}else{
return sdf.format(last) ;
}
} catch (ParseException e) {
logger.error("", e);
}
}
return retDate ;
}
public static Date getNextDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, +1);//+1今天的时间加一天
date = calendar.getTime();
return date;
}
/**
* 获取日期的月份
* @param date
* @return
*/
public static String getMonth(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH) + 1;
if(month < 10){
return "0"+month;
} else {
return String.valueOf(month);
}
}
/**
* 使用用户格式格式化日期
*
* @param date日期
* @param pattern日期格式
* @return
*/
public static String format(Date date, String pattern) {
String returnValue = "";
if (date != null) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
returnValue = df.format(date);
}
return (returnValue);
}
/**
* 比较两个日期大小
* @param DATE1
* @param DATE2
* @param format 格式 yyyy-MM-dd,yyyy-MM-dd hh:mm:ss
* @return
*/
public static int compareDate(String DATE1, String DATE2, String format) {
DateFormat df = new SimpleDateFormat(format);
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
return -1;
} else {
return 0;
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public static void main(String[] args) {
System.out.println(firstDayOfCurrentMonth());
System.out.println(lastDayOfCurrentMonth());
String camStartDate = "2016-11-11";
String camEndDate = "2019-11-11";
List years = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1 = sdf.parse(camStartDate);
Date d2 = sdf.parse(camEndDate);
Calendar c = Calendar.getInstance();
c.setTime(d1);
int year1 = c.get(Calendar.YEAR);
c.setTime(d2);
int year2 = c.get(Calendar.YEAR);
do {
if(year1 >= 2017){
years.add(year1 + "");
}
year1++;
} while (year2 >= year1);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(years);
}
/**
* 传入月份,将period转换为MM的格式
* @param period
* @return
*/
public static String getMonthTwoPlace(String period){
if(period.length() == 2){
return period;
}
if(period.length() == 1){
return "0" + period;
}
return null;
}
/**
* 将日期字符串转化为Date类型
* @param dateStr
* @param pattern
* @return
*/
public static Date StringToDate(String dateStr, String pattern) {
try {
DateFormat sdf = new SimpleDateFormat(pattern);
Date date = sdf.parse(dateStr);
return date;
} catch (Exception ex) {
return null;
}
}
/**
* 将日期转化为字符串类型
* @param dateStr
* @param pattern
* @return
*/
public static String dateToString(Date date, String pattern) {
DateFormat sdf = new SimpleDateFormat(pattern);
String dateStr = sdf.format(date);
return dateStr;
}
}