日期处理类

package univit.inspect.base.common;

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

import wherever.javabase.utility.HYDateTime;

public class DateUtil {
	
	public final static long DAYNUM = 24 * 60 * 60 * 1000;
	public final static long HOUSENUM = 60 * 60 * 1000;
	public final static long MINUTESNUM = 60 * 1000;
	public final static long SECONDNUM = 1000;
	
	/**
	 * 获取字符串对应的指定格式的日期对象
	 * @param dateTime 日期字符串
	 * @param format 日期格式
	 * @return
	 */
	public static Date getDateObject(String dateTime,String format)
	{
		SimpleDateFormat sd = new SimpleDateFormat(format);  
        ParsePosition pos = new ParsePosition(0);  
        
        Date fristDate = sd.parse(dateTime, pos);
		
		return fristDate;
	}
	
	/**
	 * 比较两个时间的值的大小
	 * @param fristTime 第一个时间
	 * @param secondTime 第二个时间
	 * @return 如果第一个时间比第二个时间小则返回true,否则返回false
	 */
	public static boolean compareDate(String fristTime,String secondTime)
	{
        Date fristDate = getDateObject(fristTime,"yyyy-MM-dd HH:mm:ss");
        
        Date secondDate = getDateObject(secondTime,"yyyy-MM-dd HH:mm:ss");
        
		return compareDate(fristDate,secondDate);
	}
	
	/**
	 * 比较两个时间的值的大小
	 * @param fristTime 第一个时间
	 * @param secondTime 第二个时间
	 * @return
	 */
	public static boolean compareDate(Date fristTime,Date secondTime)
	{
		//将两个日期转换为long型
		long fristTimeNum = fristTime.getTime();
		long secondTimeNum = secondTime.getTime();
		
		//判定:如果第一个时间比第二个时间小则返回true,否则返回false
		return secondTimeNum >= fristTimeNum;
	}
	
	/**
	 * 根据给定时间和时间间隔计算得出周期时间内的上一个时间
	 * @param starTime 给定时间
	 * @param TimeInterval 间隔时间(以小时为单位)
	 * @return 计算得到的旧时间
	 */
	public static Date reverseAgoDate(Date starTime,Integer TimeInterval)
	{
		//将TimeInterval转换为以微秒为单位的数
		Long microsecond = TimeInterval * 60 * 60 * 1000L;
		
		Long newTime = starTime.getTime() - microsecond;
		
		Date newDate = new Date(newTime);

		return newDate;
	}
	
	/**
	 * 根据开始时间和时间间隔计算得出下一个时间
	 * @param starTime 开始时间
	 * @param TimeInterval 间隔时间(以小时为单位)
	 * @return 计算得到的新时间
	 */
	public static String reverseAgoDate(String starTimestr,Integer TimeInterval)
	{
        Date startDate = getDateObject(starTimestr,"yyyy-MM-dd HH:mm:ss");

		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(reverseAgoDate(startDate,TimeInterval));
	}
	
	/**
	 * 根据开始时间和时间间隔计算得出下一个时间
	 * @param starTime 开始时间
	 * @param TimeInterval 间隔时间(以小时为单位)
	 * @return 计算得到的新时间
	 */
	public static Date forwordNextDate(Date starTime,Integer TimeInterval)
	{
		//将TimeInterval转换为以微秒为单位的数
		Long microsecond = TimeInterval * 60 * 60 * 1000L;
		
		Long newTime = starTime.getTime() + microsecond;
		
		Date newDate = new Date(newTime);

		return newDate;
	}
	
	/**
	 * 根据开始时间和时间间隔计算得出下一个时间
	 * @param starTime 开始时间
	 * @param TimeInterval 间隔时间(以小时为单位)
	 * @return 计算得到的新时间
	 */
	public static String forwordNextDate(String starTimestr,Integer TimeInterval)
	{
        Date startDate = getDateObject(starTimestr,"yyyy-MM-dd HH:mm:ss");

		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(forwordNextDate(startDate,TimeInterval));
	}
	
	/**
	 * 计算两个日期直接的间隔小时(str)
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public static int getIntervalHouse(String startTime,String endTime)
	{
        Date startDate = getDateObject(startTime,"yyyy-MM-dd HH:mm:ss");
        
        Date endDate = getDateObject(endTime,"yyyy-MM-dd HH:mm:ss");
        
        return getIntervalHouse(startDate,endDate);
	}
	
	/**
	 * 计算两个日期直接的间隔小时
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public static int getIntervalHouse(Date startTime,Date endTime)
	{
		int result = 0;
		
		long intervalTime = endTime.getTime() - startTime.getTime();
		
		if(intervalTime > HOUSENUM)
        {
        	long houseCount = 0;
        	long count = intervalTime/HOUSENUM;
        	while(count > 0)
            {
        		houseCount += count;
        		
        		intervalTime -= HOUSENUM * count;
        		count = intervalTime/HOUSENUM;
            }
        	result = (int)houseCount;
        	return result;
        }
		else
		{
			return ++result;
		}
	}
	
	/**
	 * 计算两个日期直接的间隔时间
	 * @param startTime
	 * @param endTime
	 * @return 返回间隔
	 */
	public static String getInterval(Date startTime,Date endTime) 
	{
		long intervalTime = endTime.getTime() - startTime.getTime();
        
        String result = "";
        
        if(intervalTime > DAYNUM)
        {
        	long dayCount = 0;
        	long count = intervalTime/DAYNUM;
        	while(count > 0)
            {
        		dayCount += count;
        		
        		intervalTime -= DAYNUM * count;
        		count = intervalTime/DAYNUM;
            }
        	result = result + dayCount + "天-";
        }
        if(intervalTime > HOUSENUM)
        {
        	long houseCount = 0;
        	long count = intervalTime/HOUSENUM;
        	while(count > 0)
            {
        		houseCount += count;
        		
        		intervalTime -= HOUSENUM * count;
        		count = intervalTime/HOUSENUM;
            }
        	result = result + houseCount + "小时-";
        }
        if(intervalTime > MINUTESNUM)
        {
        	long minutesCount = 0;
        	long count = intervalTime/MINUTESNUM;
        	while(count > 0)
            {
        		minutesCount += count;
        		
        		intervalTime -= MINUTESNUM * count;
        		count = intervalTime/MINUTESNUM;
            }
        	result = result + minutesCount + "分钟-";
        }
        if(intervalTime > SECONDNUM)
        {
        	long secondCount = 0;
        	long count = intervalTime/SECONDNUM;
        	while(count > 0)
            {
        		secondCount += count;
        		
        		intervalTime -= SECONDNUM * count;
        		count = intervalTime/SECONDNUM;
            }
        	result = result + secondCount + "秒-";
        }
        
        result = result.substring(0, result.lastIndexOf('-'));
        
		return result;
	}
	
	/**
	 * 计算两个日期直接的间隔时间(传入两个日期字符串)
	 * @param startTime
	 * @param endTime
	 * @return 返回间隔
	 */
	public static String getInterval(String startTime,String endTime) 
	{
		Date startDate = getDateObject(startTime,"yyyy-MM-dd HH:mm:ss");
        
        Date endDate = getDateObject(endTime,"yyyy-MM-dd HH:mm:ss");
        
        return getInterval(startDate,endDate);
	}
	
	/**
	 * @param hourNum
	 * @param dateTime
	 * @return
	 */
	@SuppressWarnings("unused")
	private static String dateTime_HourNum(int hourNum, HYDateTime dateTime) {
		String oneHoursAgoTime = "";
		Calendar cal = Calendar.getInstance();
		cal.set(dateTime.getYear(), dateTime.getMonth() - 1, dateTime.getDay(),
				dateTime.getHour(), dateTime.getMinute(), dateTime.getSecond());
		cal.add(Calendar.HOUR_OF_DAY, hourNum * -1);
		oneHoursAgoTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
				.format(cal.getTime());
		return oneHoursAgoTime;
	}
	/**
	 * 根据给定的时间,计算n天以后的这个时间
	 * @param date
	 * @param n
	 * @return
	 */
	@SuppressWarnings("static-access")
	public static String getN_Day_DateTime(String date, int n){
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		ParsePosition pos = new ParsePosition(0);  
		
		Date datestr = formatter.parse(date, pos);
		
		Calendar calendar = new GregorianCalendar();
        calendar.setTime(datestr);
        calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
        datestr=calendar.getTime(); //这个时间就是日期往后推一天的结果        
          
		return formatter.format(datestr);
	}
	
	/**
	 * 获取当前的日期和时间
	 * @param format 格式
	 * @return
	 */
	public static String getNowDateTime(String format){
		
		SimpleDateFormat formatter = new SimpleDateFormat(format==null?"yyyy-MM-dd HH:mm:ss":format);
		return formatter.format(new Date());
	}
	
	
	public static void main(String[] args) {
		
//		Date now = new Date();
//		System.out.println("现在的日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
//		System.out.println("之后的日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(forwordNextDate(now,24)));
//		
//		System.out.println(getInterval("2013-12-25 16:41:48","2013-12-25 18:48:48"));
//		
//		System.out.println(getIntervalHouse("2013-12-25 18:41:48","2013-12-25 18:48:48"));
//		
//		Date now1 = new Date(0);
//		System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now1));
//		DateUtil.getN_Day_DateTime("2013-12-31 08:00:00", 1);
		System.out.println(compareDate("2013-12-31 08:00:00","2013-12-31 08:00:00"));
		
		System.out.println(DateUtil.compareDate("2013-12-31 08:00:00","2013-12-31 08:00:00"));
		
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值