`
soongbo
  • 浏览: 88675 次
  • 性别: 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时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等

    vue 字符和日期转换工具类

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

    java操作工具类

    Java操作工具类是Java开发中常见的一种代码组织方式,它集合了各种常用的功能函数,以提高代码复用性和开发效率。这些工具类通常包含了对字符串、数组、集合、日期时间等基本数据类型的操作,以及文件I/O、网络通信...

    连接数据库操作工具类

    在IT行业中,数据库是存储和管理数据的核心组件,而连接数据库的操作工具类则是开发者与数据库交互的桥梁。本文将详细解析标题为“连接数据库操作工具类”的资源,它包含了一个数据库链接工具类、一个数据库操作工具...

    java操作时间工具类

    在提供的`TimeFormat.java`文件中,可能包含了对这些类的封装和扩展,以提供更加便捷的日期时间操作。例如,可能会有以下功能: 1. 格式化日期时间:提供一个静态方法,接收一个`Date`对象和格式模板字符串,返回...

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

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

    Cron表达式解析类和时间相关操作工具类

    1、Cron表达式解析(比如Quartz的Cron表达式),计算下一次触发时间; 2、经常使用的时间相关的操作工具类,比如时间格式化,字符串、Date、localDate、LocalDateTime类型间的转换等

    java操作日期时间工具类

    `Calendar`提供了更灵活的日期时间操作,但API设计复杂,使用起来较为繁琐。 Java 8引入了`java.time`包,这是对日期时间API的重大改进,它包含了一系列新的类,如`LocalDate`、`LocalTime`、`LocalDateTime`、`...

    redis操作工具类

    标题"redis操作工具类"暗示我们将讨论如何在Spring Boot应用中创建一个Redis操作的工具类,以便于对Redis进行便捷的CRUD(创建、读取、更新、删除)操作。这个工具类通常会利用`StringRedisTemplate`,它是Spring ...

    【强2】30个java工具类

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

    src(C/C++的常用工具类)

    时间操作工具类; 定时器 跨平台(linux,windows,ios,android)日志头文件 script windows平台下批量运行exe及终止脚本 Jenkins打包部分的python脚本 project windows系统下自动升级接口,包括利用curl库的下载...

    java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒

    这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...

    C#工具类库类库 包含所有的常用工具类

    日历和时间操作类帮助开发者处理日期和时间,例如获取当前时间、计算时间差、格式化日期等。 配置文件操作类方便读取和写入应用程序的配置信息,如XML或ini文件,使得配置信息可以独立于代码进行修改。 条形码类...

    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操作 工具类1.0

    在给定的"java操作 工具类1.0"中,我们看到几个关键的工具类,包括DateUtil、CalendarUtil、PinyinUtils以及PropertiesFileUtil。下面将详细解释这些工具类的功能及其在实际开发中的应用。 1. **DateUtil(日期处理...

Global site tag (gtag.js) - Google Analytics