Java日期格式处理工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class DateUtil {
	/**
	 * 返回上个月月份的格式化字符串时间yyyyMM
	 * 
	 * @return 返回字符型日期时间
	 */
	public static String getLastMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.setFirstDayOfWeek(Calendar.MONDAY);
		calendar.setTime(new Date());
		calendar.add(Calendar.MONTH, -1);
		if((calendar.get(Calendar.MONTH)+1)<10){
			return(calendar.get(Calendar.YEAR) + "0" + (calendar.get(Calendar.MONTH)+1));
		}else{
			return(calendar.get(Calendar.YEAR) + "" + (calendar.get(Calendar.MONTH)+1));
		}
	}


	/**
	 * 把一个字符串变成 一个java.util.Date类型的对象
	 * 
	 * @param dateStr
	 *            日期字符串
	 * 
	 * @param format
	 *            格式字符串
	 * 
	 *            说明 这俩个参数必须相对应;
	 * @return 返回日期
	 */
	public static Date parseDate(String dateStr, String format) {
		Date date = null;
		Locale locale = new Locale("en", "US"); 
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format, locale);
		// 必须捕获异常

		try {
			date = simpleDateFormat.parse(dateStr);
		} catch (ParseException px) {
			px.printStackTrace();
		}
		return date;
	}

	/**
	 * 
	 * 一个java.util.Date类型的对象 变成一个字符串
	 * 
	 * @param date
	 *            日期
	 * @param format
	 *            格式
	 * @return String 返回字符型日期
	 */
	public static String format(Date date, String format) {
		String result = "";
		try {
			if (date != null) {
				java.text.DateFormat df = new SimpleDateFormat(format);
				result = df.format(date);
			}
		} catch (Exception e) {
		}
		return result;
	}

	/**
	 * 返回年份
	 * 
	 * @param date
	 *            日期
	 * @return 返回年份
	 */
	public static int getYear(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.YEAR);
	}

	/**
	 * 返回月份
	 * 
	 * @param date
	 *            日期
	 * @return 返回月份
	 */
	public static int getMonth(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.MONTH) + 1;
	}
	/**
	 * 返回周几
	 * 
	 * @param date
	 *            日期
	 * @return 返回周几
	 */
	public static String getWeek(Date date) {
		  String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
	        Calendar cal = Calendar.getInstance();
	        cal.setTime(date);
	        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
	        if (w < 0)
	            w = 0;
	        return weekDays[w];
	}
	

	/**
	 * 返回日份
	 * 
	 * @param date
	 *            日期
	 * @return 返回日份
	 */
	public static int getDay(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 返回小时
	 * 
	 * @param date
	 *            日期
	 * @return 返回小时
	 */
	public static int getHour(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.HOUR_OF_DAY);
	}

	/**
	 * 返回分钟
	 * 
	 * @param date
	 *            日期
	 * @return 返回分钟
	 */
	public static int getMinute(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);

		return c.get(Calendar.MINUTE);
	}

	/**
	 * 返回秒钟
	 * 
	 * @param date
	 *            日期
	 * @return 返回秒钟
	 */
	public static int getSecond(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.SECOND);
	}

	/**
	 * 返回毫秒
	 * 
	 * @param date
	 *            日期
	 * @return 返回毫秒
	 */
	public static long getMillis(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.getTimeInMillis();
	}

	/**
	 * 返回格式化的字符串日期yyyy/MM/dd
	 * 
	 * @param date
	 *            日期
	 * @return 返回字符串日期
	 */
	public static String getStringDate(Date date) {
		return format(date, "yyyy/MM/dd");
	}
	public static String getStringDate2(Date date) {
		return format(date, "yyyyMMdd");
	}
	//返回本月1号
	public static String getStringDate3(Date date) {return format(date, "yyyyMM")+"01";}
	public static String getStringDate4(Date date) {
		return format(date, "yyyyMM");
	}


	/**
	 * 返回格式化的字符串时间HH:mm:ss
	 * 
	 * @param date
	 *            日期
	 * @return 返回字符串时间
	 */
	public static String getStringTime(Date date) {
		return format(date, "HH:mm:ss");
	}

	/**
	 * 返回格式化的字符串时间yyyy-MM
	 * 
	 * @param date
	 *            日期
	 * @return 返回字符串时间
	 */
	public static String getStringLineTime(Date date) {
		return format(date, "yyyy-MM");
	}
	public static String getStringYear(Date date) {
		return format(date, "yyyy");
	}
	/**
	 * 返回格式化的字符串时间yyyy/MM/dd HH:mm:ss
	 * 
	 * @param date
	 *            日期
	 * @return 返回字符型日期时间
	 */
	public static String getStringDateTime(Date date) {
		return format(date, "yyyy/MM/dd HH:mm:ss");
	}/**
	 * 返回格式化的字符串时间yyyy-MM-dd HH:mm:ss
	 * 
	 * @param date
	 *            日期
	 * @return 返回字符型日期时间
	 */
	public static String getStringDateNew(Date date) {
		return format(date, "yyyy-MM-dd HH:mm:ss");
	}
	public static String getStringDateNew2(Date date) {
		return format(date, "yyyy-MM");
	}
	public static String getStringDateTime2(Date date) {
		String time=format(date, "yyyyMMddHHmm");
		time=time.substring(0, time.length()-1)+"0";
		return time;
	}
	public static String getStringDateTime4(Date date) {
		String time=format(date, "yyyyMMddHHmm");
		return time;
	}
	public static String getStringDateTime3(Date date) {
		date=addMinute(date, -5);
		String time=format(date, "yyyyMMddHHmm");
		time=time.substring(0, time.length()-1)+"0";
		return time;
	}

	/**
	 * 日期加天数
	 * 
	 * @param date
	 *            日期
	 * @param day
	 *            天数
	 * @return 返回相加后的日期
	 */
	public static Date addDate(Date date, int day) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);
		return c.getTime();
	}
	
	public static Date addMonth(Date date, int month) {
		Calendar c = Calendar.getInstance();
		c.add(Calendar.MONTH,month);
		return c.getTime();
	}
	/**
	 * 分钟加减
	 * @param date 
	 * @param minute
	 * @return
	 */
	public static Date addMinute(Date date, int minute) {
		Calendar c = Calendar.getInstance();
		c.add(Calendar.MINUTE,minute);
		return c.getTime();
	}
	

	public static String addDate(String dateStr, int day) throws ParseException {
		try{
		SimpleDateFormat si = new SimpleDateFormat("yyyy-MM-dd");
		long s=si.parse(dateStr).getTime();
		Date dt = DateUtil.addDate(new Date(s),day); 
		return getStringDateTime(dt); 
		}catch(Exception ex){
			return "";
		}
	}
	
	public static String addData(String dateStr,int day,String format){
		try{
			SimpleDateFormat si = new SimpleDateFormat("yyyy-MM-dd");
			long s=si.parse(dateStr).getTime();
			Date dt = DateUtil.addDate(new Date(s),day); 
			return format(dt,format);
		}catch(Exception ex){
			return "";
		}
	}
	
	public static String addData(Date date,int day,String format){
		try{
			long s=date.getTime();
			Date dt = DateUtil.addDate(new Date(s),day); 
			return format(dt,format);
		}catch(Exception ex){
			return "";
		}
	}

	/**
	 * 日期减天数 求相差几天的问题
	 * 
	 * @param date
	 *            日期
	 * @param date1
	 *            日期
	 * @return 返回相减后的日期
	 */
	public static int diffDate(Date date, Date date1) {
		return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
	}

	public static Date parseDate(String dateStr) {
		return parseDate(dateStr, "yyyy/MM/dd");
	}

	/**
	 * 取得指定月份的第一天
	 * 
	 * @param strdate
	 *            String
	 * @return String
	 */

	public static String getMonthBegin(String strdate) {

		Date date = parseDate(strdate);// 注意这时候的格式 要按"yyyy/MM/dd"
		return format(date, "yyyy/MM") + "/01";// 最后得到的 本来是可以任意格式的;
												// 但是考虑到下一方法调用到这一方法的结果;
	} // 在parseDate 转的时候就 不是"yyyy/MM/dd"这种格式就转不了

	/**
	 * 取得指定月份的最后一天
	 * 
	 * @param strdate
	 *            String
	 * @return String
	 */
	public static String getMonthEnd(String strdate) {
		Date date = parseDate(getMonthBegin(strdate));
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.MONTH, 1);// 加一个月
		calendar.add(Calendar.DAY_OF_YEAR, -1);// 减一天
		return getStringDate(calendar.getTime());
	}
	/**
	 * 获取某个时间点的所在的星期的礼拜一的日期
	 * 对接专用接口
	 */
	public static String getWeekMon(Date date,String format){
		String da="";
		SimpleDateFormat sdf = new SimpleDateFormat(format); // 设置时间格式  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(date);  
        // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了  
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
        if (1 == dayWeek) {  
            cal.add(Calendar.DAY_OF_MONTH, -1);  
        }  
        //System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期  
        cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  
        int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值  
        da = sdf.format(cal.getTime());
        /*System.out.println("所在周星期一的日期:" + da);  
        cal.add(Calendar.DATE, 2);  
        String imptimeMi = sdf.format(cal.getTime());  
        System.out.println("所在周星期三的日期:" + imptimeMi);  
        cal.add(Calendar.DATE, 2);  
        String imptimeEnd = sdf.format(cal.getTime());  
        System.out.println("所在周星期五的日期:" + imptimeEnd); */ 
		return da;
	}
	
	/**
	 * 根据年 月 获取对应的月份 天数
	 * */
	public static int getDaysByYearMonth(int year, int month) {
		
		Calendar a = Calendar.getInstance();
		a.set(Calendar.YEAR, year);
		a.set(Calendar.MONTH, month - 1);
		a.set(Calendar.DATE, 1);
		a.roll(Calendar.DATE, -1);
		int maxDate = a.get(Calendar.DATE);
		return maxDate;
	}
	/**
	 * 返回格式化的字符串时间yyyy-MM-dd
	 * 
	 * @param date
	 *            日期
	 * @return 返回字符型日期时间
	 */
	public static String getYmdDate() {
		return format(new Date(), "yyyy-MM-dd");
	}	
	public static void main(String[] args) {
		Date date=new Date();
		System.out.println(getStringDateTime(date));
		date=addMinute(date, -10);
		System.out.println(getStringDateTime(date));
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值