`
soongbo
  • 浏览: 87161 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

时间操作工具类

    博客分类:
  • Java
阅读更多
   在项目开发工程中,使用了很多时间的操作,改工具类提供了很多方法
public class DateUtils {
	
    public static final long DAY_IN_MILLISECOND = 24 * 60 * 60 * 1000;
    
	public static Date addDay(Date date,int day){
		return org.apache.commons.lang.time.DateUtils.addDays(date, day);
	}
    
	public static Date addWeek(Date date,int week){
		return org.apache.commons.lang.time.DateUtils.addWeeks(date, week);
	}
	public static Date addMonth(Date date,int month){
		return org.apache.commons.lang.time.DateUtils.addMonths(date, month);
	}
	
	public static Date getDate(Date date) {
		return parseDate(format(date, "yyyyMMdd"), "yyyyMMdd");
	}
	
	public static Date addTime(Date date, int hours, int mins, int seconds) {
		Date d = org.apache.commons.lang.time.DateUtils.addHours(date, hours);
		d = org.apache.commons.lang.time.DateUtils.addMinutes(d, mins);
		return org.apache.commons.lang.time.DateUtils.addSeconds(d, seconds);
	}
	
	public static Date getPreMonthDate(Date date)  
	{  
		Calendar calendar = Calendar.getInstance();  
		calendar.setTime(date);  
		int month = calendar.get(Calendar.MONTH);  
		calendar.set(Calendar.MONTH,month-1);  
		return calendar.getTime();  
	}  
		   
	public static Date getPreYearDate(Date date)  
	{  
		Calendar calendar=Calendar.getInstance();  
		calendar.setTime(date);  
		int year=calendar.get(Calendar.YEAR);  
		calendar.set(Calendar.YEAR,year-1);  
		return calendar.getTime();  
    }   
	
	public static int get(Date date, int field) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(field);
	}
	
	/**
	 * 
	 * @param date
	 * @param pattern
	 * @return
	 */
	public static Date parseDate(String dateString, String pattern) {
		try {
			return org.apache.commons.lang.time.DateUtils.parseDate(
					dateString, new String[] { pattern });
		} catch (ParseException e) {
			return null;
		}

	}

	/**
	 * 
	 * @param date
	 * @param patterns
	 * @return
	 */
	public static Date parseDate(String dateString, String[] patterns) {
		try {
			return org.apache.commons.lang.time.DateUtils.parseDate(dateString, patterns);
		} catch (ParseException e) {
			return null;
		}

	}
	
	/**
	 * 
	 * @param year
	 * @param month
	 * @param date
	 * @return
	 */
	public static Date newDate(int year, int month, int date) {
	       return parseDate("" + year + month + date, month >= 10 ? "yyyyMMdd" : "yyyyMdd");
	}

	/**
	 * 
	 * @param year
	 * @param month
	 * @param date
	 * @return
	 */
	public static String format(int year, int month, int date, String pattern) {
		return DateFormatUtils.format(newDate(year, month, date), pattern);
	}
	
	/**
	 * 
	 * @param date
	 * @return
	 */
	public static String format(Date date) {
		return format(date,"yyyy-MM-dd");
	}
	
	/**
	 * 
	 * @param date
	 * @return
	 */
	public static String format(Date date,String pattern) {
		return DateFormatUtils.format(date, pattern);
	}
	
	/**
	 * compare the two dates, and return the subtraction between d1 and d2(d1 - d2)
	 * result > 0 when d1 > d2 and result < 0 when d1 < d2 
	 * 
	 * @param d1
	 *            Date
	 * @param d2
	 *            Date
	 * @return int
	 */
	public static int compareDateOnDay(Date d1, Date d2) {
		if(d1.getTime() == d2.getTime())
			return 0;
		d1 = org.apache.commons.lang.time.DateUtils.truncate(d1, Calendar.DATE);
		d2 = org.apache.commons.lang.time.DateUtils.truncate(d2, Calendar.DATE);
		long l1 = d1.getTime();
		long l2 = d2.getTime();
		return (int) ((l1 - l2)/DAY_IN_MILLISECOND);
	}
	
	/**
	 * compare the two dates, and return the subtraction between the dates' month
	 * always return > 0
	 * 
	 * @param d1
	 *            Date
	 * @param d2
	 *            Date
	 * @return int
	 */
	public static int compareDateOnMonth(Date d1, Date d2) {
		if (d1.getTime() == d2.getTime()) {
			return 0; 
		}
		int flag = -1;
		// compare the dates, and put the smaller before
		if (d1.getTime() > d2.getTime()) {
			Date temp = d1;
			d1 = d2;
			d2 = temp;
			flag = 1;
		}
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();
		c1.setTime(d1);
		c2.setTime(d2);
		int y1 = c1.get(Calendar.YEAR);
		int y2 = c2.get(Calendar.YEAR);
		int month1 = c1.get(Calendar.MONTH);
		int month2 = c2.get(Calendar.MONTH);
		int months = 0;
		if(y1==y2){
			
			months = month2-month1;
		
		}else{
			
			months = (y2-y1-1)*12+ (12-month1)+month2;
		
		}
		
		
		return months * flag;
	}
    
	/**
	 * judge the year whether is leap year
	 * 
	 * @param year
	 *            int year
	 * @return boolean
	 */
	public static boolean isLeapYear(int year) {
		if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) {
			return true;
		}
		return false;
		
	}

	/**
	 * return the days of the year gevin
	 * 
	 * @param year
	 *            int year
	 * @return int 
	 */
	public static int getYearDays(int year) {
		if (isLeapYear(year)) {
			return 366;
		}
		return 365;
	}
	
    /**
     * judge whether the two dates are in same day
     * 
     * @param date1
     * @param date2
     * @return
     */
    public static boolean isSameDay(Date date1, Date date2) {
       return org.apache.commons.lang.time.DateUtils.isSameDay(date1, date2);
    }
    
    public static Date truncate(Date d, int field) {
    	return org.apache.commons.lang.time.DateUtils.truncate(d, field);
    }

    public static boolean isLastDayOfMonth(Date date) {
    	return isFirstDayOfMonth(addDay(date, 1));
    }
    
    public static boolean isFirstDayOfMonth(Date date) {
    	return get(date, Calendar.DAY_OF_MONTH) == 1;
    }
    
    //add
	public static Date getLastMonthDay(int year, int month) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR,year);
		calendar.set(Calendar.MONTH,month - 1);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		return calendar.getTime();
	}
	
	public static Date getLastMonthDay(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		return calendar.getTime();
	}
	
	public static Date getFirstMonthDay(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		return calendar.getTime();
	}
	
	public static Date getFirstMonthDay(int year, int month) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR,year);
		calendar.set(Calendar.MONTH,month - 1);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		return calendar.getTime();
	}
	
	public static Date getFirstWeekDay(int year, int week) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR,year);
		calendar.set(Calendar.WEEK_OF_YEAR, week);
		calendar.set(calendar.DAY_OF_WEEK,1);
		return addDay(calendar.getTime(), 1);
	}
	
	public static Date getFirstWeekDay(Date date) {
		Calendar calendar = Calendar.getInstance();	
		calendar.setTime(date);
		calendar.set(calendar.DAY_OF_WEEK,1);
		return addDay(calendar.getTime(), 1);
	}
	
	public static Date getLastWeekDay(int year, int week) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR,year);
		calendar.set(Calendar.WEEK_OF_YEAR, week);
		calendar.set(calendar.DAY_OF_WEEK,7);
		return addDay(calendar.getTime(), 1);
	}
	
	public static Date getLastWeekDay(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(calendar.DAY_OF_WEEK,7);
		return addDay(calendar.getTime(), 1);
	}
	
	public static int getWeek(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setFirstDayOfWeek(Calendar.MONDAY);
		calendar.setTime(date);
		return calendar.get(Calendar.WEEK_OF_YEAR);
	}
	
	public static int getMonth(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.MONTH)+1;
	}
	
	public static int getYear(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.YEAR);
	}
	
	public static int getInterval(Date d1, Date d2) {
		int betweenDays = 0; 
		Calendar c1 = Calendar.getInstance(); 
		Calendar c2 = Calendar.getInstance(); 
		c1.setTime(d1); 
		c2.setTime(d2); 
		// 保证第二个时间一定大于第一个时间 
		if(c1.after(c2)){ 
		c1 = c2; 
		c2.setTime(d1); 
		} 
		int betweenYears = c2.get(Calendar.YEAR)-c1.get(Calendar.YEAR); 
		betweenDays = c2.get(Calendar.DAY_OF_YEAR)-c1.get(Calendar.DAY_OF_YEAR); 
		for(int i=0;i<betweenYears;i++){ 
		c1.set(Calendar.YEAR,(c1.get(Calendar.YEAR)+1));
		betweenDays += c1.getMaximum(Calendar.DAY_OF_YEAR); 
		}
		
		return betweenDays;
	}
	
	public static List<Date> getDateList(Date startDate, Date endDate) {
		List<Date> dates = new ArrayList<Date>();
		
		int betweenDays = DateUtils.getInterval(startDate, endDate);
		for (int i = 0; i <= betweenDays; i++) {
			Date day = DateUtils.addDay(startDate, i);
			
			if (day.getTime() >= startDate.getTime() && day.getTime() <= endDate.getTime()) {
				dates.add(day);
			}
		}
		
		return dates;
	}
	
	public static int getMonthInterval(Date startDate, Date endDate) {
		int betweenMonths = 0;
		Calendar c1 = Calendar.getInstance(); 
		Calendar c2 = Calendar.getInstance(); 
		
		c1.setTime(startDate);
		c2.setTime(endDate);
		// 保证第二个时间一定大于第一个时间 
		if(c1.after(c2)){ 
			c1 = c2; 
			c2.setTime(startDate); 
		} 
		
		int y1 = c1.get(Calendar.YEAR);
		int y2 = c2.get(Calendar.YEAR);
		
		int m1 = c1.get(Calendar.MONTH);
		int m2 = c2.get(Calendar.MONTH);
		
		if (y2 > y1) {
			betweenMonths += (y2 - y1) * 12;
		}
		betweenMonths += (m2 - m1);
		
		return betweenMonths;
	}
	
	public static int getWeekInterval(Date startDate, Date endDate) {
		int betweenWeeks = 0;
		Calendar c1 = Calendar.getInstance(); 
		Calendar c2 = Calendar.getInstance(); 
		
		c1.setTime(startDate);
		c2.setTime(endDate);
		// 保证第二个时间一定大于第一个时间 
		if(c1.after(c2)){ 
			c1 = c2; 
			c2.setTime(startDate); 
		}
		
		int y1 = c1.get(Calendar.YEAR);
		int y2 = c2.get(Calendar.YEAR);
		
		int w1 = c1.get(Calendar.WEEK_OF_YEAR);
		int w2 = c2.get(Calendar.WEEK_OF_YEAR);
		
		betweenWeeks += (w2 - w1);
		int betweenYears = y2 - y1;
		for (int i = 0; i < betweenYears; i++) {
			c1.set(Calendar.YEAR,(c1.get(Calendar.YEAR)+1));
			betweenWeeks += c1.getMaximum(Calendar.WEEK_OF_YEAR);
		}
		
		return betweenWeeks;
	}
分享到:
评论

相关推荐

    Date时间操作工具类

    Date时间操作工具类 js: 1.一个日期时间加上分钟数,得到一个新的日期时间 2.判断当前时间是否在时间段之内 3.根据默认的格式格式化时间 4.根据指定的格式格式化时间 5.改变月份 6.改变天数 7.计算天数间隔 8.Date转...

    java时间操作工具类 DateUtils

    java中常用的时间操作;如日期,时间戳,日历,字符串相互转化;时间差等常用日期功能。

    java日期时间操作工具类

    主要为大家详细介绍了java日期时间操作工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java最全时间工具类,针对年月日周的操作

    java时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等

    vue 字符和日期转换工具类

    vue 字符和日期转换工具类,先将util里面的公共对象抛出,全局使用

    操作日期时间的工具类,封装的比较完善

    java写的,操作日期时间的工具类,封装的比较完善,可以获取最小时间, 获取最大时间,获取今天最小时间,获取今天最大时间,获取明天的最小时间,获取明天的最大时间,获取昨天的最小时间,获取昨天的最大时间,...

    java操作时间工具类

    本人在项目开发中遇到的关于时间的操作,各位可以直接下载做工具类用

    【强2】30个java工具类

    [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] ...

    Java时间工具类

    Java对时间进行操作的工具类,包括各种时间格式转化的方法以及一些时间比较登方法。

    30个java工具类

    [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] ...

    常用的java工具类

    1.[工具类] 读取、打印输出、保存xml .java ...7.[工具类] 文件操作工具类 .java 8.[工具类] 序列化保存为XML文件的工具类 .java 9.[工具类] 验证码img .jsp 10.[工具类] 中文验证.jsp ......... 等等20几个常用工具类.

    类型操作工具类

    java 代码级工具,JDK8,方便创建任意参数类型的ArrayList,HashMap,HashSet,缩短复杂的对象强制类型转换代码,运行代码级时间统计。代码例子地址:https://blog.csdn.net/xiuye2015/article/details/89813633

    Elasticsearch的JAVA操作工具类,包括增删改查的封装

    Elasticsearch的JAVA操作工具类,包括增删改查的封装,Elasticsearch的JAVA操作工具类,包括增删改查的封装

    文件操作工具类

    文件操作是任何语言中最为常用的部分,Java也不例外。这里主要介绍文件中包含的记录数,获取文件的MD5值,获取文件的生成时间,根据时间删除文件4个静态方法。

    日期操作工具类

    日期操作工具类 /** * 将日期对象按照换为时间字符串 * 默认格式为"yyyy-MM-dd HH:mm:ss" * @param sourceTime * @return * @throws ParseException */ public static String formatDate(Date ...

    java常用工具类打包下载

    J2EE常用工具类汇总 ...J2EE常用工具类—时间处理工具类 J2EE常用工具类—文件打包解包处理类 J2EE常用工具类——文件操作类 J2EE常用工具类——邮件处理类(javaMail发送邮件) J2EE常用工具类——字符串工具类

    java操作 工具类1.0

    工具类 DateUtil(日期处理) CalendarUtil(时间处理) PinyinUtils(汉字转拼音) PropertiesFileUitl(键值对文件存取)等,继续更新

    Date日期操作工具类

    Date日期处理的工具类,包括日期格式化,字符串转换成日期,对日期的【时分秒年月日】进行加/减,获取时间差,计算两个日期之间相差的天数,等各种对日期的操作

    DateUtil.java

    时间操作工具类

    通用的Java工具类,主要包括基础工具类(时间、正则表达式、字符串、随机数等等),excel解析生成、word解析生成、文件操作、图片操作、敏感字、加解密等等

    通用的Java工具类,主要包括基础工具类(时间、正则表达式、字符串、随机数等等),excel解析生成、word解析生成、文件操作、图片操作、敏感字、加解密等等

Global site tag (gtag.js) - Google Analytics