日期工具类

package com.fastrise.fastdev.base.utils.common;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.springframework.util.Assert;

/**
 * 日期工具类
 */
public class DateUtils extends org.apache.commons.lang.time.DateUtils {
    
	/**
	 * 返回当前时间
	 * 
	 * @return 返回当前时间
	 */
	public static Date getCurrentDateTime() {
		java.util.Calendar calNow = java.util.Calendar.getInstance();
		java.util.Date dtNow = calNow.getTime();
		return dtNow;
	}

	
    /**
     * @return 返回今天日期,时间部分为0。例如:2006-4-8 00:00:00
     */
    public static Date getToday() {
        return truncate(new Date(), Calendar.DATE);
    }
    
    /**
     * @return 返回今天日期,时间部分为23:59:59.999。例如:2006-4-19 23:59:59.999
     */
    public static Date getTodayEnd() {
        return getDayEnd(new Date());
    }
    
    /**
     * @return 返回今年的最初时间。例如:2010-1-1 00:00:00
     */
    public static Date getCurrentYearStart(){
    	return truncate(new Date(), Calendar.YEAR);
    }
    
    /**
     * 将字符串转换为日期.
     * @param dateString 日期字符串
     * @param pattern    日期字符串匹配模式 例:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static Date convertToDate(String dateString, String pattern) {
		try {
			DateFormat format = new SimpleDateFormat(pattern);
			return format.parse(dateString);
		} catch (ParseException e) {
			return null;
		}
	}
    
    /**将Date转换成字符串.
     * @param date 时间
     * @param pattern 日期字符串匹配模式 例:yyyy-MM-dd HH:mm:ss
     */
    public static String DateToString(Date date,String pattern){
    	DateFormat format = new SimpleDateFormat(pattern);
    	return format.format(date);
    }
 
    /**将Date转换成字符串.
     * @param date 时间
     * @param pattern 日期字符串匹配模式 例:yyyy-MM-dd
     */
    public static String DateToDateString(Date date){
    	if (date==null) {
			return null;
		}
    	DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    	return format.format(date);
    }
    
    /**将Date转换成字符串.日期字符串匹配模式 例:yyyy-MM-dd HH:mm:ss
     * @param date 时间
     */
    public static String DateToDateTimeString(Date date){
    	if(null==date)
    		return null;
    	DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    	return format.format(date);
    }
    
	public static String DateToMonthday(Date date) {
		if(null==date)
    		return null;
    	DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    	return format.format(date);
	}
	
    /**
     * 将字符串转换为日期.
     * @param dateString 日期字符串
     * @param pattern    日期字符串匹配模式 例: yyyy-MM-dd HH:mm:ss
     * @param locale     
     * @return
     */
    public static Date convertToSqlDate(String dateString, String pattern) {
		try {
			DateFormat format = new SimpleDateFormat(pattern);
			return format.parse(dateString);
		} catch (ParseException e) {
			return null;
		}
	}
    /**
     * 将字符串转换为日期(不包括时间)
     * @param dateString "yyyy-MM-dd"格式的日期字符串
     * @return 日期
     */
    public static Date convertToDate(String dateString) {
		try{
			return FormatConstants.DATE_FORMAT.parse(dateString);
		}catch (ParseException e) {
		    return null;
		}
    }
    
    /**
     * 检查字符串是否为日期格式yyyy-MM-dd
     * @param dateString
     * @return true=是;false=否
     */
    public static boolean checkDateString(String dateString) {
        return (convertToDate(dateString)!=null);
    }
    
    /**
     * 将字符串转换为日期(包括时间)
     * @param dateString "yyyy-MM-dd HH:mm:ss"格式的日期字符串
     * @return 日期时间
     */
    public static Date convertToDateTime(String dateTimeString) {
		try{
			return FormatConstants.DATE_TIME_FORMAT.parse(dateTimeString);
		}catch (ParseException e) {
		    return null;
		}
    }
    
    /**
     * 检查字符串是否为日期时间格式 例:yyyy-MM-dd HH:mm:ss
     * @param dateString
     * @return true=是;false=否
     */
    public static boolean checkDateTimeString(String dateTimeString) {
        return (convertToDateTime(dateTimeString)!=null);
    }
    
    /**
     * 获取月底
     * @param year 年 4位年度
     * @param month 月 1~12
     * @return 月底的Date对象。例如:2006-3-31 23:59:59.999
     */
    public static Date getMonthEnd(int year, int month) {
        StringBuffer sb = new StringBuffer(10);
        Date date;
        if (month<12) {
            sb.append(Integer.toString(year));
            sb.append("-");
            sb.append(month+1);
            sb.append("-1");
            date = convertToDate(sb.toString());
        }else{
            sb.append(Integer.toString(year+1));
            sb.append("-1-1");
            date = convertToDate(sb.toString());
        }
        date.setTime(date.getTime() - 1);
        return date;
    }
    
    /**
     * 获取月底
     * @param when 要计算月底的日期
     * @return 月底的Date对象。例如:2006-3-31 23:59:59.999
     */
    public static Date getMonthEnd(Date when) {
        Assert.notNull(when,"date must not be null !");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(when);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH)+1;
        return getMonthEnd(year,month);
    }
    
    /**
     * 获取给定日的最后一刻。
     * @param when 给定日
     * @return 最后一刻。例如:2006-4-19 23:59:59.999
     */
    public static Date getDayEnd(Date when) {
        Date date = truncate(when,Calendar.DATE);
        date = addDays(date,1);
        date.setTime(date.getTime() - 1);
        return date;
    }
    
    /**
     * 获取给定日的第一刻。
     * @param when 给定日
     * @return 最后一刻。例如:2006-4-19 23:59:59.999
     */
    public static Date getDay(Date when) {
        Date date = truncate(when,Calendar.DATE);
        date = addDays(date,-1);
        date.setTime(date.getTime() + 1);
        return date;
    }

    /**
     * 日期加法
     * @param when 被计算的日期
     * @param field the time field. 在Calendar中定义的常数,例如Calendar.DATE
     * @param amount 加数
     * @return 计算后的日期
     */
    public static Date add(Date when, int field, int amount) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(when);
        calendar.add(field,amount);
        return calendar.getTime();
    }
    
    /**
     * 计算给定的日期加上给定的天数。
     * @param when 给定的日期
     * @param amount 给定的天数
     * @return 计算后的日期
     */
    public static Date addDays(Date when, int amount) {
        return add(when,Calendar.DAY_OF_YEAR,amount);
    }
    
    /**
     * 计算给定的日期加上给定的月数。
     * @param when 给定的日期
     * @param amount 给定的月数
     * @return 计算后的日期
     */
    public static Date addMonths(Date when, int amount) {
        return add(when,Calendar.MONTH,amount);
    }
    
    /**
     * 得到当前服务端的日期,格式如:2010年11月11日  星期四
     * @return
     */
    public static String getCurrentDay(){
    	String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五","星期六" };
    	Calendar calendar = Calendar.getInstance();   
		Date date = new Date();   
		calendar.setTime(date);   
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1;   
		if(dayOfWeek <0)dayOfWeek=0;   
    	return DateToString(date,"yyyy年MM月dd日") + " " + dayNames[dayOfWeek];
    }
    
    /**
     * 计算两个日期相差的天数
     * @param latDate
     * 			被减的日期
     * @param preDate
     * 			减去的日期
     * @return
     */
    public static long getDifferDays(Date latDate, Date preDate){
    	long differTime = latDate.getTime() - preDate.getTime();
    	return differTime/(1000*60*60*24);
    }
    
    /**
     * 计算两个时间相差的小时数
     * @param latDate
     * 			被减的时间
     * @param preDate
     * 			减去的时间
     * @return
     */
    public static double getDifferHours(Date latDate, Date preDate){
    	long differTime = latDate.getTime() - preDate.getTime();
    	return (double)differTime/(1000*60*60);
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值