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

时间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

    基本方法较全 自带测试方式 不需要节假日等方法可以删除Lunar.java以及DateUtils的相关方法

    自己封装的DateUtils工具类

    自己封装的DateUtils工具类,内含多种日期格式转换方法,自己在项目开发过程中使用,方便日期转换

    DateUtils.java工具类很实用

    DateUtils.java工具类很实用

    DateUtils Java时间工具类

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

    java时间操作工具类 DateUtils

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

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

    主要为大家详细介绍了java针对于时间转换的DateUtils工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    DateUtils日期工具类

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

    java中DateUtils时间工具类详解

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

    DateUtils(日期工具类)

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

    DateUtils时间转化工具类

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

    java时间处理工具类--DateUtils

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

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

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

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

    NULL 博文链接:https://topmanopensource.iteye.com/blog/434445

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

    主要介绍了Java 中DateUtils日期工具类的实例详解的相关资料,有时候开发java项目使用日期类型,这里介绍下日期工具类,需要的朋友可以参考下

    java日期时间工具类超级全

    java日期时间工具类超级全。其中包含:获得当前日期 yyyy-MM-dd HH:mm:ss;获取系统当前时间戳;获取当前日期 yy-MM-dd;得到两个时间差 格式yyyy-MM-dd HH:mm:ss;转化long值的日期为yyyy-MM-dd HH:mm:ss.SSS格式的...

    Java日期工具类DateUtils实例详解

    主要为大家详细介绍了Java日期工具类DateUtils实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    时间操作公共方法DateUtils

    工具类包含String,Long,Date三种日志类型的获取和转换,不同时间单位(年/月/日/时/分/秒/毫秒)的时间差计算,给定时间获取附近整周的日期等~

    apache工具类

    apache工具类,StringUtil和CollectionUtils,,以及其他的Util,apache工具类,StringUtil,,以及其他的Util,

    DateUtils.java

    DateUtils,时间工具类,对常见时间类型做了转换

    JAVA工具类

    DateUtils - 日期工具类 HtmlFilterUtils - 过滤html标签 JsoupUtils - 基于jsoup过滤html标签 MoneyUtils - 获取大写金额 NumberUtils - 数字工具类 PinyinUtils - 汉字转拼音 media MediaUtils - 基于ffmpeg,...

Global site tag (gtag.js) - Google Analytics