Java Date工具类

Date 工具类

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DateUtil {

	static Logger logger = LoggerFactory.getLogger(DateUtil.class);

	/**
	 * @param date yyyyMMdd format
	 * @return the total days of this month
	 */
	public static Integer dayLimit(String date) {
		Integer year = new Integer(date.substring(0, 4));
		String month = date.substring(4, 6);
		Boolean isLeapYear = false;

		String sWith31Days = "|01|03|05|07|08|10|12|";
		String sWith30Days = "|04|06|09|11|";
		String sWithFeb = "|02|";

		Integer dayLimt = 31;
		// check if this year is leap year
		if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
			isLeapYear = true;
		} else {
			isLeapYear = false;
		}

		// get total days of this month
		if (sWith31Days.contains(month)) {
			dayLimt = 31;
		} else if (sWith30Days.contains(month)) {
			dayLimt = 30;
		} else if (sWithFeb.contains(month)) {
			if (isLeapYear) {
				dayLimt = 29;
			} else {
				dayLimt = 28;
			}
		}
		return dayLimt;
	}

	public static String yesterday() {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.DAY_OF_YEAR, -1);
		String yesterday = simpleDateFormat.format(calendar.getTime());
		return yesterday;
	}

	public static String today() {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
		String yesterday = simpleDateFormat.format(new Date());
		return yesterday;
	}

	//某天的前一天
	public static String beforeDate(String thisDate) throws ParseException {
		// get date before report date
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
		Calendar calendar = Calendar.getInstance();

		Date date = simpleDateFormat.parse(thisDate);
		calendar.setTime(date);
		calendar.add(Calendar.DATE, -1);

		String beforeDate = simpleDateFormat.format(calendar.getTime());
		return beforeDate;
	}

	//Y-years 几年前
	public static Date beforeYears(Integer years) {

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.YEAR, -years);
		Date date = calendar.getTime();
		return date;
	}

	//M-months 几月前
	public static Date beforeMonths(Integer months) {

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.MONTH, -months);
		Date date = calendar.getTime();
		return date;
	}

	//T-days 几天前
	public static Date beforeDays(Integer days) {

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.DATE, -days);
		Date date = calendar.getTime();
		return date;
	}

	public static SimpleDateFormat getSimpleDateFormat() {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
		return simpleDateFormat;
	}

	//date2String
	public static String date2String(Date date) {

		String stringNow = getSimpleDateFormat().format(date); // 把当前时间转为字符串,字符串格式为yyyy-MM-dd
		logger.info("stringNow is {}", stringNow);
		return stringNow;

	}

	//string2Date
	public static Date string2Date(String time) throws ParseException {
		// String time = ""2017-01-04 11:22:33:000"";
		Date date = getSimpleDateFormat().parse(time);
		return date;
	}

	//sleep
	static void sleep(Integer beginHour, Integer beginMin, Integer endHour, Integer endMin, Integer period) {

		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar date = Calendar.getInstance();
		Date nowDate = date.getTime();

		Calendar begin = new GregorianCalendar();
		begin.set(Calendar.HOUR_OF_DAY, beginHour);
		begin.set(Calendar.MINUTE, beginMin);
		begin.set(Calendar.SECOND, 0);
		begin.set(Calendar.MILLISECOND, 0);
		Date beginDate = begin.getTime();

		Calendar end = new GregorianCalendar();
		end.set(Calendar.HOUR_OF_DAY, endHour);
		end.set(Calendar.MINUTE, endMin);
		end.set(Calendar.SECOND, 0);
		end.set(Calendar.MILLISECOND, 0);
		Date endDate = end.getTime();
		logger.info("begin time is {}", simpleDateFormat.format(beginDate));
		logger.info("end   time is {}", simpleDateFormat.format(endDate));
		logger.info("before sleep time is {}", simpleDateFormat.format(nowDate));

		Boolean result = date.after(begin) && date.before(end);

		if (result) {
			try {
				Thread.sleep(period);
			} catch (InterruptedException e) {

			}
		}

		Calendar test = Calendar.getInstance();
		Date testDate = test.getTime();
		logger.info("after  sleep time is {}", simpleDateFormat.format(testDate));
	}

	public static void main(String[] args) throws ParseException {
		Date date = beforeDays(2);
		date2String(date);
	}
}

  

posted on 2017-01-04 11:32  dreamstar  阅读(64)  评论(0编辑  收藏  举报