import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
private static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
private static SimpleDateFormat getSimpleDateFormat(String format){
if(format == null) {
format = DEFAULT_FORMAT;
}
return new SimpleDateFormat(format);
}
/**
* 获取当前时间
* @return
*/
public static String getDateString(){
return getSimpleDateFormat(null).format(new Date());
}
/**
* 字符串转化日期
* @param dateString
* @return 返回日期格式:yyyy-MM-dd
* @throws ParseException
*/
public static Date getDate(String dateString) throws ParseException{
if(dateString == null){
return null;
}
return getSimpleDateFormat(null).parse(dateString);
}
/**
* 将字符类型的日期转换成指定格式的日期类型
* @param dateString
* @param format
* @return
* @throws ParseException
*/
public static Date getDate(String dateString, String format) throws ParseException{
if(dateString == null) {
return null;
}
return getSimpleDateFormat(format).parse(dateString);
}
/**
* 日期格式转换
* @param obj
* @param pattern yyyyMMddHHmmss
* @return
* @throws ParseException
*/
public static String getStrDate(Object obj, String pattern) throws ParseException {
SimpleDateFormat sdf = getSimpleDateFormat(pattern);
if((obj instanceof String) && "".equals(obj.toString())){
obj=new Date();
}
if (obj instanceof Date) {
return sdf.format(obj);
} else if (obj instanceof String) {
SimpleDateFormat sdf1 = getSimpleDateFormat(DEFAULT_FORMAT);
Date myDate = sdf1.parse(obj.toString());
return sdf.format(myDate);
}
return null;
}
/**
* 将指定日期从格式1 转到格式2
* @param obj
* @param pattern1 原格式
* @param pattern2 目标格式
* @return
* @throws ParseException
*/
public static String getStrDate(Object obj, String pattern1, String pattern2) throws ParseException {
SimpleDateFormat sdf1 = getSimpleDateFormat(pattern1);
SimpleDateFormat sdf2 = getSimpleDateFormat(pattern2);
if((obj instanceof String) && "".equals(obj.toString())){
obj=new Date();
}
if (obj instanceof Date) {
return sdf2.format(obj);
} else if (obj instanceof String) {
Date myDate = sdf1.parse(obj.toString());
return sdf2.format(myDate);
}
return null;
}
/**
* 得到一个时间延后或前移几天的时间
* @param nowdate
* @param delay 为前移或后延的天数 负数表示前几天,整数表示向后几天.如当前时间是4号 如果传递1那么得到的是5号 如果传递-1 那么得到的是3号
* @return
*/
public static Date getNextDay(Date nowdate, int delay){
Calendar c =Calendar.getInstance();
c.setTime(nowdate);
c.add(Calendar.DAY_OF_MONTH,delay);//把当前时间中的data自减1
return c.getTime();
}
/**
* 判断是否润年
* 1.被400整除是闰年,否则:
* 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
* 3.能被4整除同时能被100整除则不是闰年
* @param ddate
* @return
* @throws ParseException
*/
public static boolean isLeapYear(String ddate) throws ParseException {
Date d = getDate(ddate);
Calendar gc = Calendar.getInstance();
gc.setTime(d);
int year = gc.get(Calendar.YEAR);
return compareLeap(year);
}
/**
* 闰年比较
* @param year
* @return
*/
public static Boolean compareLeap(int year){
if ((year % 400) == 0) {
return true;
} else if ((year % 4) == 0) {
Boolean flag = false;
if((year % 100) == 0){
flag = true;
}
return flag;
} else {
return false;
}
}
/**
* 获取指定日期所在周的周日
*
* @param date 日期
* @return
*/
public static Date getLastDayOfWeek(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
// 如果是周日直接返回
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
return date;
}
c.add(Calendar.DATE, 7 - c.get(Calendar.DAY_OF_WEEK) + 1);
return c.getTime();
}
private DateUtil() {
}
}
时间处理工具类
于 2023-06-02 15:34:28 首次发布