`
Franciswmf
  • 浏览: 775150 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

日期时间工具类

 
阅读更多
  /**
     * 取得当前日期所在周的第一天
     *
     * @param date
     * @return
     */
    public static Date getFirstDayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK,
                      calendar.getFirstDayOfWeek()); // Sunday
        return calendar.getTime();
    }

    /**
     * 取得当前日期所在周的最后一天
     *
     * @param date
     * @return
     */
    public static Date getLastDayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK,
                     calendar.getFirstDayOfWeek() + 6); // Saturday
        return calendar.getTime();
    }



    /**
     * 日期加减天数,并以Date形式返回
     * @param value
     * @param num
     * @return
     */
    public static Date addDays(Date date, int num) {
    	if (date == null) {
            return null;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DATE, num);
        return c.getTime();
    }
    
    /**
     * 日期加减月数,并以Date形式返回
     * @param value
     * @param num
     * @return
     */
    public static Date addMonths(Date date, int num) {
    	if (date == null) {
            return null;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.MONTH, num);
        return c.getTime();
    }

public static void main(String[] args) {
		Date dt=new Date();
		System.out.println("本周第一天:"+getFirstDayOfWeek(dt)+";"+DateExtendUtils.addDay(getFirstDayOfWeek(dt), 1));
		System.out.println("本周最后一天:"+getLastDayOfWeek(dt)+";"+DateExtendUtils.addDay(getLastDayOfWeek(dt), 1));
	}


/**
	 * 增加日期的年份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param yearAmount
	 *            增加数量。可为负数
	 * @return 增加年份后的日期字符串
	 */
	public static String addYear(String date, int yearAmount) {
		return addInteger(date, Calendar.YEAR, yearAmount);
	}

	/**
	 * 增加日期的年份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param yearAmount
	 *            增加数量。可为负数
	 * @return 增加年份后的日期
	 */
	public static Date addYear(Date date, int yearAmount) {
		return addInteger(date, Calendar.YEAR, yearAmount);
	}

	/**
	 * 增加日期的月份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param monthAmount
	 *            增加数量。可为负数
	 * @return 增加月份后的日期字符串
	 */
	public static String addMonth(String date, int monthAmount) {
		return addInteger(date, Calendar.MONTH, monthAmount);
	}

	/**
	 * 增加日期的月份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param monthAmount
	 *            增加数量。可为负数
	 * @return 增加月份后的日期
	 */
	public static Date addMonth(Date date, int monthAmount) {
		return addInteger(date, Calendar.MONTH, monthAmount);
	}

	/**
	 * 增加日期的天数。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加天数后的日期字符串
	 */
	public static String addDay(String date, int dayAmount) {
		return addInteger(date, Calendar.DATE, dayAmount);
	}

	/**
	 * 增加日期的天数。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加天数后的日期
	 */
	public static Date addDay(Date date, int dayAmount) {
		return addInteger(date, Calendar.DATE, dayAmount);
	}

	/**
	 * 增加日期的小时。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param hourAmount
	 *            增加数量。可为负数
	 * @return 增加小时后的日期字符串
	 */
	public static String addHour(String date, int hourAmount) {
		return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
	}

	/**
	 * 增加日期的小时。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param hourAmount
	 *            增加数量。可为负数
	 * @return 增加小时后的日期
	 */
	public static Date addHour(Date date, int hourAmount) {
		return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
	}

	/**
	 * 增加日期的分钟。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param minuteAmount
	 *            增加数量。可为负数
	 * @return 增加分钟后的日期字符串
	 */
	public static String addMinute(String date, int minuteAmount) {
		return addInteger(date, Calendar.MINUTE, minuteAmount);
	}

	/**
	 * 增加日期的分钟。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加分钟后的日期
	 */
	public static Date addMinute(Date date, int minuteAmount) {
		return addInteger(date, Calendar.MINUTE, minuteAmount);
	}

	/**
	 * 增加日期的秒钟。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加秒钟后的日期字符串
	 */
	public static String addSecond(String date, int secondAmount) {
		return addInteger(date, Calendar.SECOND, secondAmount);
	}

	/**
	 * 增加日期的秒钟。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加秒钟后的日期
	 */
	public static Date addSecond(Date date, int secondAmount) {
		return addInteger(date, Calendar.SECOND, secondAmount);
	}



    /**
     * "yyyy-MM-dd HH:mm:ss"
     */
    public static String DATE_PATTERN_01="yyyy-MM-dd HH:mm:ss";

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

import org.apache.commons.lang.StringUtils;

import com.bill99.mbp.common.enums.CommonConstants;
/**
 * 日期时间处理工具类
 */
public class TestDateUtils {
	/**
	 * 线程隔离的THREADLOCAL_SDF
	 * (ThreadLocal用于保存某个线程共享变量:
	 * 对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量)
	 */
    private static final ThreadLocal<SimpleDateFormat> THREADLOCAL_SDF= new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat(CommonConstants.DATE_PATTERN_01);
        }
    };
    
    /**
     * 将Date格式按照默认的pattern形式转换为字符串格式
     * @param date
     * @return
     */
    public static String formatFun(Date date) {
        return THREADLOCAL_SDF.get().format(date);
    }
    
    /**
     * 将Date格式按照pattern形式转换为字符串格式
     * @param date
     * @param pattern
     * @return
     */
    public static String formatFun(Date date, String pattern) {
    	if(null == date || StringUtils.isBlank(pattern)){
    		return "";
    	}
        SimpleDateFormat sdf = THREADLOCAL_SDF.get();
        try {
            sdf.applyPattern(pattern);
            return sdf.format(date);
        } finally {
            sdf.applyPattern(CommonConstants.DATE_PATTERN_01);
        }

    }
    /**
     * 时间戳转换成日期格式字符串
     * @param seconds 精确到秒的字符串
     * @param formatStr
     * @return
     */
    public static String timeStamp2DateFun(Long date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (date == null || date.equals("null")) {
            return "";
        }
        return format.format(date);
    }

    /** 
     * 将时间转换为时间戳
     */    
    public static Long date2StampFun(String s) throws ParseException{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = simpleDateFormat.parse(s);
        Long ts = date.getTime();
        return ts;
    }

    public static void main(String[] args) {
		Date now=new Date();
		String nowStr=format(now);
		System.out.println(nowStr);
	}
}



public class YearUtils {
	
	/** 
	*判断指定年份是平年还是闰年
	*true-闰年;false-平年;
	*闰年的认定条件是符合下面二者之一:
	*(1)年份能被4整除,但不能被100整除;
	*(2)能被400整除。
	**/
	public static boolean checkYear(int year){
		if( ( year%4==0 && year%100!=0 ) || year%400==0 ){
			//闰年
			return true;
		}else{
			//平年
			return false;
		}
	}
	
/*	public static void main(String[] args) {
		boolean bool=checkYear(2004);
		System.out.println(bool);
		boolean bool2=checkYear(2016);
		System.out.println(bool2);
		boolean bool3=checkYear(2019);
		System.out.println(bool3);
	}*/
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics