`
113.com
  • 浏览: 81165 次
  • 来自: 广州
社区版块
存档分类
最新评论

时间DateUtils工具类

    博客分类:
  • java
 
阅读更多
package com.item.utils;

import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import org.apache.commons.lang.time.DateFormatUtils;

public class DateUtils {

	private DateUtils() {
	}

	public static String format(Date date) {
		try {
			return DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");
		} catch (Exception e) {
			// TODO: handle exception
			return null;
		}
	}
	
	public static String format(Date date,String pattern) {
		try {
			return DateFormatUtils.format(date, pattern);
		} catch (Exception e) {
			// TODO: handle exception
			return null;
		}
	}
	
	/**
	 * 日期累加
	 * 
	 * @param format
	 *            返回的日期格式
	 * @param StrDate
	 *            要累加的日期
	 * @param year
	 *            加多少年
	 * @param month
	 *            加多少个月
	 * @param day
	 *            加多少天
	 * @return
	 */
	public static String GetSysDate(String format, String StrDate, int year,
			int month, int day) {
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat sFmt = new SimpleDateFormat(format);
		cal.setTime(sFmt.parse((StrDate), new ParsePosition(0)));

		if (day != 0) {
			cal.add(cal.DATE, day);
		}
		if (month != 0) {
			cal.add(cal.MONTH, month);
		}
		if (year != 0) {
			cal.add(cal.YEAR, year);
		}
		return sFmt.format(cal.getTime());
	}

	public static long getInterval(String begin, String end) {
		try {
			Date beginTime = DateUtils.parse(begin, "yyyy-MM-dd");
			Date endTime = DateUtils.parse(end, "yyyy-MM-dd");
			long day = 0;
			day = (beginTime.getTime() - endTime.getTime()) / (24 * 60 * 60 * 1000);
			return day;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	public static String getDelay(String now, Integer delay, String pattern, Integer time) {
		String delayDate = null;
		try {
			Date date = parse(now, pattern);
			long delayTime = (date.getTime() / 1000) + delay * time;
			date.setTime(delayTime * 1000);
			delayDate = DateFormatUtils.format(date, pattern);

			return delayDate;
		} catch (Exception e) {
			return null;
		}
	}

	public static String getPreMonthFirst(String now, Integer delay, String pattern) {
		Calendar c = Calendar.getInstance();
		c.setTime(parse(now, pattern));
		c.set(Calendar.DATE, 1);
		c.add(Calendar.MONTH, -1);
		
		return DateFormatUtils.format(c, "yyyy-MM-dd");
	}
	
	public static String getDelayDay(String now, Integer delay, String pattern) {
		return getDelay(now, delay, pattern, 24 * 60 * 60);
	}

	public static String getDelayHour(String now, Integer delay, String pattern) {
		return getDelay(now, delay, pattern, 60 * 60);
	}

	public static String getDelayMinute(String now, Integer delay,
			String pattern) {
		return getDelay(now, delay, pattern, 60);
	}

	public static Date parse(String date, String pattern) {
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		ParsePosition pos = new ParsePosition(0);

		return format.parse(date, pos);
	}
	public static Date parse(String date) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		ParsePosition pos = new ParsePosition(0);
		return format.parse(date, pos);
	}


	public static String getWeek(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		
		return DateFormatUtils.format(c, "EEEE");
	}
	// 获取前count天
	public static String getAddCountDay(int count,String day){
			
		SimpleDateFormat simpleDate2 = new SimpleDateFormat("yyyy-MM-dd");
		// 指定日期/时间分析是否不严格 ,false为严格
		simpleDate2.setLenient(false);	
		Date myDate;
		try {
			myDate = simpleDate2.parse(day);
			 Long myTime=(myDate.getTime()/1000)+60*60*24*count;
			 myDate.setTime(myTime*1000);
			 // 返回String
			 return  simpleDate2.format(myDate);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
		}
		
		return day;
	}
	/**
	 * 	对比两个字符串格式的日期,返回相差日期
	 *  如果date1比date2大,返回负数。
	 * **/
	public static int contrastStringDate(String date1,String date2){
		
		   int day=0; 	   
		   
		   SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
		   
		   GregorianCalendar calendar1=new GregorianCalendar();
		   GregorianCalendar calendar2=new GregorianCalendar();
		  //String s1="2006-04-21";
		   //String s2="2006-04-25";
		   Date xxx1=new Date();
		   Date xxx2=new Date();
		  try {
			  xxx1=sf.parse(date1);
			  xxx2=sf.parse(date2);
			  day = (int) ((xxx2.getTime() - xxx1.getTime()) / 3600 / 24 / 1000);	
		  } catch (ParseException e) {
			  
			  //e.printStackTrace();
		  }
		  
		  return day;
	}
	
	/**
	 * 获取两个时间相差的分钟数
	 * @param start	开始时间
	 * @param end	结束时间
	 * @return		分钟数
	 */
	public static long hasMinute(Date start,Date end){
		try {
			System.out.println(start+"======="+end);
			long result=end.getTime()-start.getTime();
			System.out.println(end.getTime()+"========"+start.getTime());
			result = result / (1000 * 60);//分钟数
			return result;
		} catch (Exception e) {
			// TODO: handle exception
			return 0;
		}
	}
	
	/**
	 * 获取某年某月的最后一天
	 * @param date 日期 形式yyyy-MM-dd
	 * @author guojt
	 * @return 
	 */
	public static String getLastDayOfMonth(String date) {
		String[] ss = date.split("-");
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, Integer.valueOf(ss[0]));
		cal.set(Calendar.MONTH, Integer.valueOf(ss[1])-1);
		int maxDay = cal.getActualMaximum(Calendar.DATE);
		return ss[0] + "-" + ss[1] + "-" + maxDay;
	}
	
	/**
	 * 根据年份、周返回指定月份的日期段
	 * @param year 年
	 * @param week 周
	 * @param month 月
	 * @return
	 */
	public static String getDateByWeek(int year,int week,int month){
		String ret = "";
		Calendar c = Calendar.getInstance();
		c.set(year, 0, 1);
		int day_week = c.get(Calendar.DAY_OF_WEEK);
		//c.add(Calendar.DATE, -(day_week-1));
		c.add(Calendar.DATE, 7*week-(day_week-1));
		
		if((month - c.get(Calendar.MONTH)) != 1){
			ret += "1-";
			c.add(Calendar.DATE, 6);
			ret += c.get(Calendar.DAY_OF_MONTH);
		}else{
			int sun_week = c.get(Calendar.DAY_OF_MONTH);
			ret += sun_week + "-";
			c.add(Calendar.DATE, 6);
			int sat_week = c.get(Calendar.DAY_OF_MONTH);
			if(sat_week > sun_week){
				ret += sat_week;
			}else{
				ret += (6 - sat_week + sun_week);
			}
		}
		
		return ret;
	}
	
	/**
	 * 月份相减
	 * @author guojt
	 * @param date1 开始日期 格式yyyy-MM
	 * @param date2 结束日期 格式yyyy-MM
	 * @return 两个日期相差的月数
	 */
	 public static int getMonthInterval(String date1,String date2) {
		 try{
			 SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM");
	         Calendar cal1=Calendar.getInstance();
	             cal1.setTime(fmt.parse(date1));
	         Calendar cal2=Calendar.getInstance();
	             cal2.setTime(fmt.parse(date2));
	         //年份之差 + 月份之差
	         return (cal2.get(1)-cal1.get(1))*12+(cal2.get(2)-cal1.get(2));
		 }catch (Exception e) {
			e.printStackTrace();
		 }
		 return 0;
    }
	 
	 /**
	  * 月份相加
	  * @author guojt
	  * @param date 起始日期 格式:yyyy-MM
	  * @param n 月数
	  * @return 起始日期加上n个月后的日期
	  */
	public static String getAddCountMonth(String date,int n){
		try{
			SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM");
			Calendar c = Calendar.getInstance();
	        c.setTime(fmt.parse(date));
	        c.add(Calendar.MONTH, n);
	        return fmt.format(c.getTime());
        }catch (Exception e) {
			e.printStackTrace();
		}
        return null;
	}
	
	/**
	 * 得到当前日期是周几,返回的是数字 0是周日--6是周六
	 * @param date
	 * @return
	 */
	public static int getThisDateOfWeek(String date){
		try {
			SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
			Calendar cd = Calendar.getInstance();
			cd.setTime(fmt.parse(date));
			// 获得今天是一周的第几天,星期日是第一天,星期一是第二天......
			int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
			return dayOfWeek;
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return -1;
	}
	
	/**
	 * 获取某年某月的第一天
	 * @param date 日期 形式yyyy-MM-dd
	 * @return
	 */
	public static String getFirstDayOfMonth(String date){
		String[] ss = date.split("-");
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, Integer.valueOf(ss[0]));
		cal.set(Calendar.MONTH, Integer.valueOf(ss[1])-1);
		int minDay = cal.getActualMinimum(Calendar.DATE);
		if(minDay < 10){
			return ss[0] + "-" + ss[1] + "-0" + minDay;
		}else{
			return ss[0] + "-" + ss[1] + "-" + minDay;
		}
	}
	
	   /** 
     * 获取当年的第一天 
     * @param year 
     * @return 
     */  
    public static Date getCurrYearFirst(){  
        Calendar currCal=Calendar.getInstance();    
        int currentYear = currCal.get(Calendar.YEAR);  
        return getYearFirst(currentYear);  
    } 
    
    
    /** 
     * 获取某年第一天日期 
     * @param year 年份 
     * @return Date 
     */  
    public static Date getYearFirst(int year){  
        Calendar calendar = Calendar.getInstance();  
        calendar.clear();  
        calendar.set(Calendar.YEAR, year);  
        Date currYearFirst = calendar.getTime();  
        return currYearFirst;  
    }  
    /** 
     * 获取某年最后一天日期 
     * @param year 年份 
     * @return Date 
     */  
    public static Date getCurrYearLast(int year){  
        Calendar calendar = Calendar.getInstance();  
        calendar.clear();  
        calendar.set(Calendar.YEAR, year);  
        calendar.roll(Calendar.DAY_OF_YEAR, -1);  
        Date currYearLast = calendar.getTime();  
          
        return currYearLast;  
    }  
    /**
	 * 判断这个日期是否这个日期所在年的第一天
	 * @param date
	 * @return
	 */
	public static boolean judgeIsFirstDayOfYear(String date){
		Date firstDay =getYearFirst(Integer.parseInt(format(parse(date), "yyyy")));// getYearFirst();
		if(format(parse(date),"yyyy-MM-dd").equals(format(firstDay,"yyyy-MM-dd"))){
			return true;
		}else{
			return false;
		}
	}
	 /**
		 * 判断这个日期是否这个日期所在年的最后一天
		 * @param date
		 * @return
		 */
		public static boolean judgeIsLastDayOfYear(String date){
			Date lastDay =getCurrYearLast(Integer.parseInt(format(parse(date), "yyyy")));// getYearFirst();
			if(format(parse(date),"yyyy-MM-dd").equals(format(lastDay,"yyyy-MM-dd"))){
				return true;
			}else{
				return false;
			}
		}
	public static void main(String[] args) {
		System.out.println(getFirstDayOfMonth(format(new Date())));
		judgeIsLastDayOfYear("2013-12-30");
	}
	
	/**
	 * 判断这个日期是否这个日期所在月的第一天
	 * @param date
	 * @return
	 */
	public static boolean judgeIsFirstDayOfMonth(String date){
		String firstDay = getFirstDayOfMonth(date);
		if(date.equals(firstDay)){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 判断这个日期是否这个日期所在月的最后一天
	 * @param date
	 * @return
	 */
	public static boolean judgeIsLastDayOfMonth(String date){
		String lastDay = getLastDayOfMonth(date);
		if(date.equals(lastDay)){
			return true;
		}else{
			return false;
		}
	}
	
	
	
/*	
	public static void main(String[] agrs){
//		System.out.println(getDateByWeek(2011,9,3));
//		System.out.println(DateUtils.getMonthInterval("2010-05-01","2011-01-09"));
//		System.out.println(DateUtils.getAddCountMonth("2010-05",3));
//		System.out.println(DateUtils.format(new Date(), "yyyyMM"));
//		System.out.println(hasMinute((new Date(2010-1900,11-1,15,10,16,0)),(new Date())));
		String d="15-12月-11 06.10.36.000000 下午";
		Date date=parse(d, "dd-MM月-yy hh.mm.ss.SS a");
		System.out.println(date);
		System.out.println(format(date,"yyyy-MM-dd HH:mm:ss"));
		System.out.println(format(new Date(),"dd-MM月-yy hh.mm.ss.SS a"));
	}*/
}

 

分享到:
评论

相关推荐

    自己封装的DateUtils工具类

    在Java编程中,DateUtils工具类是一个非常实用的辅助类,它封装了各种日期和时间处理的方法,大大简化了开发者在处理日期时的工作。这里我们深入探讨一下自定义的DateUtils工具类及其重要功能。 首先,`DateUtils`...

    DateUtils.java工具类很实用

    DateUtils.java工具类很实用

    时间工具类 DateUtils

    本篇文章将详细讲解基于提供的"时间工具类 DateUtils"的知识点,包括DateUtils的主要功能、如何使用以及Lunar.java的相关内容。 首先,`DateUtils` 类通常是一个自定义的时间处理类,它扩展了Java内置的`java.util....

    java针对于时间转换的DateUtils工具类

    Java 中的 DateUtils 工具类是 Java 语言中的一种常用工具类,用于处理日期和时间的转换。该工具类提供了多种日期和时间的转换方法,包括 String 转 Timestamp、String 转 Date、Date 转 String、Date 转 Timestamp ...

    DateUtils Java时间工具类

    非常好用的Date工具类 1、计算两个日期之间相差的天数 2、判断日期是否为周六日 3、获取当前周开始日期 4、获取当前周结束日期 5、判断年份是否是闰年 6、根据年份和月份计算天数 7、判断日期为该年的第几周 等等

    java中DateUtils时间工具类详解

    Java 中 DateUtils 时间工具类详解 DateUtils 是一个非常实用的时间工具类,在 Java 开发中经常被使用。下面我们将详细介绍 DateUtils 时间工具类的使用方法和实现原理。 首先,DateUtils 时间工具类提供了多种...

    java时间操作工具类 DateUtils

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

    DateUtils(日期工具类)

    DateUtils(日期工具类),包含日期格式化,解析等。

    Java日期处理工具类DateUtils详解

    DateUtils工具类是一个非常有用的Java日期处理工具类,它提供了一系列日期和时间处理相关的操作,涵盖了日期和时间的格式化、解析、计算等多方面的内容。开发者可以根据需要使用DateUtils工具类来快速实现日期相关的...

    java开发,30个常用工具类总结,全部来自项目实践中用到的工具类

    1. **DateUtils**: `java.util.Date` 和 `java.time` 包含日期和时间的操作,但DateUtils通常是Apache Commons Lang库中的一个工具类,提供更方便的日期处理方法,如格式化、解析、比较和日期的加减操作。...

    flex 学习项目中总结的时间处理工具类DateUtils

    `DateUtils`类通常是一个自定义的工具类,用于简化JavaScript或Java等语言中的日期和时间操作。在这个名为"flex 学习项目中总结的时间处理工具类DateUtils"的项目中,我们可能找到了一个针对Flex开发环境优化的日期...

    java时间处理工具类--DateUtils

    * 根据日历的规则,为基准时间添加指定日历字段的单个时间单元 * * @param field * 日历字段, 使用Calendar类定义的日历字段常量 * @param up * 指定日历字段的值的滚动方向。true:向上滚动 / false:向...

    DateUtils日期工具类

    一些日期的处理,获取当前时间、date日期和字符串相互转化等

    DateUtils时间转化工具类

    基于java环境的时间格式转化工具类

    Java日期工具类DateUtils实例详解

    Java 日期工具类 DateUtils 实例详解 本文主要介绍了 Java 日期工具类 DateUtils 实例的实现和使用,涵盖了日期工具类的常用方法和变量,包括日期格式化、字符串转换、日期比较等。 日期工具类 DateUtils ...

    Java 中DateUtils日期工具类的实例详解

    Java 中DateUtils日期工具类的实例详解 Java 中DateUtils日期工具类是 Java 语言中对日期类型的操作的重要组件,主要用于处理日期类型和字符串类型之间的转换。在 Java 项目中,日期类型的处理往往非常不方便,特别...

    DateUtils.java 日期处理相关工具类

    * 文件名:DateUtils.java 日期处理相关工具类 * 版本信息:V1.0 * 日期:2013-03-11 * Copyright BDVCD Corporation 2013 * 版权所有 http://www.bdvcd.com */ public class DateUtils { /**定义常量**/ ...

    时间日期工具类(包含java8新特性).zip

    在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java,它们很可能是自定义的工具类,用来扩展Java的标准日期处理功能。 首先,我们来看Java 8引入的新特性。在...

    时间的帮助类DateUtils.zip

    在Java编程语言中,日期和时间的处理是一个常见的任务,而`DateUtils`类通常是为了简化这类操作而自定义的工具类。这个`DateUtils.zip`压缩包包含了一个名为`Time的帮助类DateUtils.txt`的文件,我们可以从中学习到...

    apache工具类

    - **DateUtils**: 提供日期和时间操作,如格式化、解析和比较。 - **BeanUtils**: 提供了bean属性的复制和转换功能。 - **ClassUtils**: 类型转换和类加载的辅助类。 - **FileUtils**: 文件操作,如读写文件、删除、...

Global site tag (gtag.js) - Google Analytics