zoukankan      html  css  js  c++  java
  • JAVA时间Date工具类

    package com.common.util;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    
    public class DateUtils {
    	private StringBuffer buffer = new StringBuffer();
    	private static String ZERO = "0";
    	private static DateUtils date;
    	public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    	public static SimpleDateFormat format1 = new SimpleDateFormat(
    			"yyyyMMdd HH:mm:ss");
    	public static SimpleDateFormat common_format = new SimpleDateFormat(
    			"yyyy-MM-dd HH:mm:ss");
    
    	public String getNowString() {
    		Calendar calendar = getCalendar();
    		buffer.delete(0, buffer.capacity());
    		buffer.append(getYear(calendar));
    
    		if (getMonth(calendar) < 10) {
    			buffer.append(ZERO);
    		}
    		buffer.append(getMonth(calendar));
    
    		if (getDate(calendar) < 10) {
    			buffer.append(ZERO);
    		}
    		buffer.append(getDate(calendar));
    		if (getHour(calendar) < 10) {
    			buffer.append(ZERO);
    		}
    		buffer.append(getHour(calendar));
    		if (getMinute(calendar) < 10) {
    			buffer.append(ZERO);
    		}
    		buffer.append(getMinute(calendar));
    		if (getSecond(calendar) < 10) {
    			buffer.append(ZERO);
    		}
    		buffer.append(getSecond(calendar));
    		return buffer.toString();
    	}
    
    	private static int getDateField(Date date, int field) {
    		Calendar c = getCalendar();
    		c.setTime(date);
    		return c.get(field);
    	}
    
    	public static int getYearsBetweenDate(Date begin, Date end) {
    		int bYear = getDateField(begin, Calendar.YEAR);
    		int eYear = getDateField(end, Calendar.YEAR);
    		return eYear - bYear;
    	}
    
    	public static int getMonthsBetweenDate(Date begin, Date end) {
    		int bMonth = getDateField(begin, Calendar.MONTH);
    		int eMonth = getDateField(end, Calendar.MONTH);
    		return eMonth - bMonth;
    	}
    
    	public static int getWeeksBetweenDate(Date begin, Date end) {
    		int bWeek = getDateField(begin, Calendar.WEEK_OF_YEAR);
    		int eWeek = getDateField(end, Calendar.WEEK_OF_YEAR);
    		return eWeek - bWeek;
    	}
    
    	public static int getDaysBetweenDate(Date begin, Date end) {
    		return (int) ((end.getTime()-begin.getTime())/(1000 * 60 * 60 * 24));
    	}
    
    	public static void main(String args[]) {
    		System.out.println(getSpecficMonthStart(Calendar.getInstance().getTime(), 0));
    	}
    
    	/**
    	 * 获取date年后的amount年的第一天的开始时间
    	 * 
    	 * @param amount
    	 *            可正、可负
    	 * @return
    	 */
    	public static Date getSpecficYearStart(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		cal.add(Calendar.YEAR, amount);
    		cal.set(Calendar.DAY_OF_YEAR, 1);
    		return getStartDate(cal.getTime());
    	}
    
    	/**
    	 * 获取date年后的amount年的最后一天的终止时间
    	 * 
    	 * @param amount
    	 *            可正、可负
    	 * @return
    	 */
    	public static Date getSpecficYearEnd(Date date, int amount) {
    		Date temp = getStartDate(getSpecficYearStart(date, amount + 1));
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(temp);
    		cal.add(Calendar.DAY_OF_YEAR, -1);
    		return getFinallyDate(cal.getTime());
    	}
    
    	/**
    	 * 获取date月后的amount月的第一天的开始时间
    	 * 
    	 * @param amount
    	 *            可正、可负
    	 * @return
    	 */
    	public static Date getSpecficMonthStart(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		cal.add(Calendar.MONTH, amount);
    		cal.set(Calendar.DAY_OF_MONTH, 1);
    		return getStartDate(cal.getTime());
    	}
    
    	/**
    	 * 获取当前自然月后的amount月的最后一天的终止时间
    	 * 
    	 * @param amount
    	 *            可正、可负
    	 * @return
    	 */
    	public static Date getSpecficMonthEnd(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(getSpecficMonthStart(date, amount + 1));
    		cal.add(Calendar.DAY_OF_YEAR, -1);
    		return getFinallyDate(cal.getTime());
    	}
    
    	/**
    	 * 获取date周后的第amount周的开始时间(这里星期一为一周的开始)
    	 * 
    	 * @param amount
    	 *            可正、可负
    	 * @return
    	 */
    	public static Date getSpecficWeekStart(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		cal.setFirstDayOfWeek(Calendar.MONDAY); /* 设置一周的第一天为星期一 */
    		cal.add(Calendar.WEEK_OF_MONTH, amount);
    		cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    		return getStartDate(cal.getTime());
    	}
    
    	/**
    	 * 获取date周后的第amount周的最后时间(这里星期日为一周的最后一天)
    	 * 
    	 * @param amount
    	 *            可正、可负
    	 * @return
    	 */
    	public static Date getSpecficWeekEnd(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setFirstDayOfWeek(Calendar.MONDAY); /* 设置一周的第一天为星期一 */
    		cal.add(Calendar.WEEK_OF_MONTH, amount);
    		cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    		return getFinallyDate(cal.getTime());
    	}
    
    	public static Date getSpecficDateStart(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		cal.add(Calendar.DAY_OF_YEAR, amount);
    		return getStartDate(cal.getTime());
    	}
    	
    	public static Date getSpecficDateEnd(Date date, int amount) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		cal.add(Calendar.DAY_OF_YEAR, amount);
    		return getFinallyDate(cal.getTime());
    	}
    
    	/**
    	 * 得到指定日期的一天的的最后时刻23:59:59
    	 * 
    	 * @param date
    	 * @return
    	 */
    	public static Date getFinallyDate(Date date) {
    		String temp = format.format(date);
    		temp += " 23:59:59";
    
    		try {
    			return format1.parse(temp);
    		} catch (ParseException e) {
    			return null;
    		}
    	}
    
    	/**
    	 * 得到指定日期的一天的的最后时刻23:59:59
    	 *
    	 * @param date
    	 * @return
    	 */
    	public static String getFinallyDateStr(Date date) {
    		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    		String temp = format.format(date);
    		temp += " 23:59:59";
    
    		try {
    			return temp;
    		} catch (Exception e) {
    			return temp;
    		}
    	}
    
    	/**
    	 * 得到指定日期的一天的开始时刻00:00:00
    	 * 
    	 * @param date
    	 * @return
    	 */
    	public static Date getStartDate(Date date) {
    		String temp = format.format(date);
    		temp += " 00:00:00";
    
    		try {
    			return format1.parse(temp);
    		} catch (Exception e) {
    			return null;
    		}
    	}
    
    
    	/**
    	 * 得到指定日期的一天的开始时刻00:00:00
    	 *
    	 * @param date
    	 * @return
    	 */
    	public static String getStartDateStr(Date date) {
    		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    		String temp = format.format(date);
    		temp += " 00:00:00";
    
    		try {
    			return temp;
    		} catch (Exception e) {
    			return temp;
    		}
    	}
    
    
    
    
    	/**
    	 * 
    	 * @param date
    	 *            指定比较日期
    	 * @param compareDate
    	 * @return
    	 */
    	public static boolean isInDate(Date date, Date compareDate) {
    		if (compareDate.after(getStartDate(date))
    				&& compareDate.before(getFinallyDate(date))) {
    			return true;
    		} else {
    			return false;
    		}
    
    	}
    	
    	/**
    	 * 获取两个时间的差值秒
    	 * @param d1
    	 * @param d2
    	 * @return
    	 */
    	public static Integer getSecondBetweenDate(Date d1,Date d2){
    		Long second=(d2.getTime()-d1.getTime())/1000;
    		return second.intValue();
    	}
    
    	private int getYear(Calendar calendar) {
    		return calendar.get(Calendar.YEAR);
    	}
    
    	private int getMonth(Calendar calendar) {
    		return calendar.get(Calendar.MONDAY) + 1;
    	}
    
    	private int getDate(Calendar calendar) {
    		return calendar.get(Calendar.DATE);
    	}
    
    	private int getHour(Calendar calendar) {
    		return calendar.get(Calendar.HOUR_OF_DAY);
    	}
    
    	private int getMinute(Calendar calendar) {
    		return calendar.get(Calendar.MINUTE);
    	}
    
    	private int getSecond(Calendar calendar) {
    		return calendar.get(Calendar.SECOND);
    	}
    
    	private static Calendar getCalendar() {
    		return Calendar.getInstance();
    	}
    
    	public static DateUtils getDateInstance() {
    		if (date == null) {
    			date = new DateUtils();
    		}
    		return date;
    	}
    }
    

      

  • 相关阅读:
    Leetcode 449. Serialize and Deserialize BST
    机器学习入门(1)------python基础
    Leetcode 23. Merge k Sorted Lists
    mysql explain执行计划详解
    ubuntu下安装chrome浏览器证书
    ubantu下配置android开发环境(Ubuntu 12.04.4 LTS x64 dell 3420)
    system v信号量的深入剖析
    AI文件格式解析
    STC12LE5A60S2第二串口出现的奇葩问题
    ZIGBEE官方协议栈 SampleApp工程DemoEB项目 运行机制详解
  • 原文地址:https://www.cnblogs.com/pxblog/p/10593440.html
Copyright © 2011-2022 走看看