import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* 日期操作工具類
* @author chen
*/
public class DatetimeUtil {
/**
* 日期格式化
* @param strVal
* @param format
* @return
*/
public static Date getDateTime(String strVal, String format) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Date date = simpleDateFormat.parse(strVal);
return date;
} catch (ParseException e) {
return null;
}
}
/**
* 將字符串轉化爲日期類型 yyyy-MM-dd
* @param strVal
* @return
*/
public static Date getDate(String strVal) {
return getDateTime(strVal, "yyyy-MM-dd");
}
/**
* 將字符串轉化爲日期類型 yyyy-MM-dd HH:mm:ss
* @param strVal
* @return
*/
public static Date getDateTime(String strVal) {
return getDateTime(strVal, "yyyy-MM-dd HH:mm:ss");
}
/**
* 將字符串按指定類型進行轉換
* @param date
* @param format
* @return
*/
public static String getDateTimeString(Date date, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
String str = simpleDateFormat.format(date);
return str;
}
/**
* 將日期轉換成年份
* @param date
* @return
*/
public static String getYearString(Date date) {
return getDateTimeString(date, "yyyy");
}
/**
* 將日期轉換成yyyy-MM-dd形式的字符串
* @param date
* @return
*/
public static String getDateString(Date date) {
return getDateTimeString(date, "yyyy-MM-dd");
}
/**
* 將日期轉換成yyyy-MM-dd HH:mm:ss形式的字符串
* @param date
* @return
*/
public static String getDateTimeString(Date date) {
return getDateTimeString(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* 給日期添加開始時間
* @param date
* @return
*/
public static Date getDateBegin(Date date) {
String strVal = getDateString(date) + " 00:00:00";
return getDateTime(strVal);
}
/**
* 給日期添加結束時間
* @param date
* @return
*/
public static Date getDateEnd(Date date) {
String strVal = getDateString(date) + " 23:59:59";
return getDateTime(strVal);
}
/**
* 獲取某年開始時刻
* @param year
* @return Date
*/
public static Date getYearBegin(int year) {
String strVal = year + "-01-01 00:00:00";
return getDateTime(strVal);
}
/**
* 獲取某年結束時刻
* @param year
* @return Date
*/
public static Date getYearEnd(int year) {
String strVal = year + "-12-31 23:59:59";
return getDateTime(strVal);
}
/**
* 獲取今年開始時刻
* @return Date
*/
public static Date getYearBegin() {
Integer year = Calendar.getInstance().get(Calendar.YEAR);
String strVal = year + "-01-01 00:00:00";
return getDateTime(strVal);
}
/**
* 獲取今年結束時刻
* @return Date
*/
public static Date getYearEnd() {
Integer year = Calendar.getInstance().get(Calendar.YEAR);
String strVal = year + "-12-31 23:59:59";
return getDateTime(strVal);
}
/**
* 將日期重新格式化
* @param strVal
* @param fromFormat
* @param toFormat
* @return
*/
public static String convertDateTimeString(String strVal, String fromFormat, String toFormat) {
Date date = DatetimeUtil.getDateTime(strVal, fromFormat);
return DatetimeUtil.getDateTimeString(date, toFormat);
}
/**
* 當前時間加n年
* @param n
* @return
*/
public static Date addYearFromNow(Integer n) {
Calendar calendar=Calendar.getInstance(Locale.CHINA);
calendar.setTime(new Date());
calendar.add(Calendar.YEAR, n);
Date date = calendar.getTime();
return date;
}
/**
* 傳入Calendar獲得日期
* @param calendar
* @return
*/
public static String getYearMonthDay(Calendar calendar) {
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
return year + "-" + month + "-" + day;
}
/**
* 獲取這周的某天
* @param calendar
* @param day_of_week
* @return
*/
public static String getWeekDate(Calendar calendar, int day_of_week) {
//最小星期一
while(calendar.get(Calendar.DAY_OF_WEEK) != 2 && calendar.get(Calendar.DAY_OF_WEEK) != day_of_week) {
calendar.add(Calendar.DAY_OF_MONTH, -1);
}
if(calendar.get(Calendar.DAY_OF_WEEK) == day_of_week)
return DatetimeUtil.getDateString(calendar.getTime());
//最大星期日
while(calendar.get(Calendar.DAY_OF_WEEK) != 1 && calendar.get(Calendar.DAY_OF_WEEK) != day_of_week) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return DatetimeUtil.getDateString(calendar.getTime());
}
}