时间处理工具类

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() {
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jin-进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值