常用Date日期方法

<pre name="code" class="java">package com.util;

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

public class CalendarUtil {
/** 缺省日期格式 */
	public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
	/** 缺省时间格式 */
	public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";


	/** 缺省月格式 */
	public static final String DEFAULT_MONTH = "MONTH";


	/** 缺省年格式 */
	public static final String DEFAULT_YEAR = "YEAR";


	/** 缺省日格式 */
	public static final String DEFAULT_DATE = "DAY";


	/** 缺省长日期格式 */
	public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH-mm";


	/** 缺省长日期格式,精确到秒 */
	public static final String DEFAULT_DATETIME_FORMAT_SEC = "yyyy-MM-dd HH:mm:ss";


	/**
	 * 取当前日期
	 * 
	 * @return 当前日期的字符串 ,如2002-12-12
	 **/
	public static String today() {
		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				DEFAULT_DATE_FORMAT);
		java.util.Date currentTime_1 = SystemUtil.getCurDate();
		String dateString = formatter.format(currentTime_1);
		return dateString;
	}


	public static String today(String strFormat) {
		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				strFormat);
		java.util.Date currentTime_1 = SystemUtil.getCurDate();
		String dateString = formatter.format(currentTime_1);
		return dateString;
	}


	/**
	 * 取当前时间,
	 * 
	 * @return 当前时间,如:21:10:12
	 **/
	public static String time() {
		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				DEFAULT_TIME_FORMAT);
		java.util.Date currentTime_1 = SystemUtil.getCurDate();
		String dateString = formatter.format(currentTime_1);
		return dateString;
	}


	/**
	 * 取当前时间,规定格式 'hh:mm:ss'
	 * 
	 * @return 当前时间,如:21:10:12
	 **/


	public static String time(String strFormat) {
		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				strFormat);
		java.util.Date currentTime_1 = SystemUtil.getCurDate();
		String dateString = formatter.format(currentTime_1);
		return dateString;
	}


	/**
	 * 取得相对于当前时间增加天数/月数/年数后的日期 <br>
	 * 欲取得当前日期5天前的日期,可做如下调用:<br>
	 * getAddDay("DATE", -5).
	 * 
	 * @param field
	 *            ,段,如"year","month","date",对大小写不敏感
	 * 
	 * @param amount
	 *            ,增加的数量(减少用负数表示),如5,-1
	 * @return 格式化后的字符串 如"2000-02-01"
	 **/


	public static String getAddDay(String field, int amount) {
		// 当前日期和前一天


		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				DEFAULT_DATETIME_FORMAT_SEC);


		Calendar rightNow = Calendar.getInstance();
		Date dt = SystemUtil.getCurDate();
		rightNow.setTime(dt);


		int intField = 0;
		String tmpField = field.toUpperCase();


		intField = Calendar.DATE;
		if (tmpField.equals(DEFAULT_YEAR))
			intField = Calendar.YEAR;
		if (tmpField.equals(DEFAULT_MONTH))
			intField = Calendar.MONTH;
		if (tmpField.equals(DEFAULT_DATE))
			intField = Calendar.DATE;


		rightNow.add(intField, amount);
		String day = formatter.format(rightNow.getTime());
		return day;
	}


	/**
	 * 取得相对于当前时间增加天数/月数/年数后的日期,按指定格式输出
	 * 
	 * 
	 * 欲取得当前日期5天前的日期,可做如下调用:<br>
	 * getAddDay("DATE", -5,'yyyy-mm-dd hh:mm').
	 * 
	 * @param field
	 *            ,段,如"year","month","date",对大小写不敏感
	 * 
	 * @param amount
	 *            ,增加的数量(减少用负数表示),如5,-1
	 * @param strFormat
	 *            ,输出格式,如"yyyy-mm-dd","yyyy-mm-dd hh:mm"
	 * @return 格式化后的字符串 如"2000-02-01 hh:mm:ss"
	 **/
	public static String getAddDay(String field, int amount, String strFormat) {
		// 当前日期和前一天


		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				strFormat);


		Calendar rightNow = Calendar.getInstance();
		Date dt = SystemUtil.getCurDate();
		rightNow.setTime(dt);


		int intField = 0;
		String tmpField = field.toUpperCase();


		intField = Calendar.DATE;
		if (tmpField.equals(DEFAULT_YEAR))
			intField = Calendar.YEAR;
		if (tmpField.equals(DEFAULT_MONTH))
			intField = Calendar.MONTH;
		if (tmpField.equals(DEFAULT_DATE))
			intField = Calendar.DATE;


		rightNow.add(intField, amount);
		String day = formatter.format(rightNow.getTime());
		return day;
	}


	/**
	 * 获取办理期限,过滤节假日
	 * 
	 * @param days
	 *            提交的天数
	 * 
	 * @param flags
	 *            设定的节假日列表
	 * @return 实际的办理期限
	 */
	public static String getDistDay(int days, String[] flags) {
		int tempday = days;
		int count = 0;
		for (int i = 0; i < flags.length; i++) {
			if (flags[i].equals("1")) {
				count += 1;
			}
			if (count == days) {
				tempday = i;
				break;
			}
		}
		return getAddDay(DEFAULT_DATE, tempday, DEFAULT_DATE_FORMAT);
	}


	/**
	 * 功能:对于给定的时间增加天数/月数/年数后的日期,按指定格式输出
	 * 
	 * 
	 * @param date
	 *            String 要改变的日期
	 * @param field
	 *            int 日期改变的字段,YEAR,MONTH,DAY
	 * @param amount
	 *            int 改变量
	 * 
	 * @param strFormat
	 *            日期返回格式
	 * @return
	 * @throws ParseException
	 * @author
	 */
	public static String getAddDay(String date, String field, int amount,
			String strFormat) {
		try {
			// 当前日期和前一天
			java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
					strFormat);


			Calendar rightNow = Calendar.getInstance();
			Date tempdate = formatter.parse(date);
			rightNow.setTime(tempdate);


			int intField = 0;
			String tmpField = field.toUpperCase();


			intField = Calendar.DATE;
			if (tmpField.equals(DEFAULT_YEAR))
				intField = Calendar.YEAR;
			if (tmpField.equals(DEFAULT_MONTH))
				intField = Calendar.MONTH;
			if (tmpField.equals(DEFAULT_DATE))
				intField = Calendar.DATE;


			rightNow.add(intField, amount);
			String day = formatter.format(rightNow.getTime());
			return day;
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return "";
	}


	/**
	 * 功能:对于给定的时间增加天数/月数/年数后的日期,按指定格式输出
	 * 
	 * 
	 * 
	 * @param date
	 *            String 要改变的日期
	 * @param field
	 *            int 日期改变的字段,YEAR,MONTH,DAY
	 * @param amount
	 *            int 改变量
	 * 
	 * 
	 * @param strFormat
	 *            日期返回格式
	 * @return
	 * @throws ParseException
	 */
	public static String getAddDay(Date date, String field, int amount,
			String strFormat) {
		// 当前日期和前一天


		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				strFormat);


		Calendar rightNow = Calendar.getInstance();
		Date tempdate = date;
		rightNow.setTime(tempdate);


		int intField = 0;
		String tmpField = field.toUpperCase();


		intField = Calendar.DATE;
		if (tmpField.equals(DEFAULT_YEAR))
			intField = Calendar.YEAR;
		if (tmpField.equals(DEFAULT_MONTH))
			intField = Calendar.MONTH;
		if (tmpField.equals(DEFAULT_DATE))
			intField = Calendar.DATE;


		rightNow.add(intField, amount);
		String day = formatter.format(rightNow.getTime());
		return day;
	}


	/**
	 * Timestamp按照指定格式转为字符串
	 * 
	 * @param ts
	 *            源对象
	 * 
	 * @param sFormat
	 *            ps(如yyyy.mm.dd)
	 * 
	 * @return 如:2003-01-01 或2003-01-01 13:21
	 */
	public static String toString(Timestamp ts, String sFormat) {
		if (ts == null) {
			return "";
		}
		java.util.Date d = new java.util.Date(ts.getTime());
		return toString(d, sFormat);
	}


	/**
	 * Timestamp按照缺省格式转为字符串
	 * 
	 * @param ts
	 *            源对象
	 * 
	 * @return 如:2003-01-01
	 */
	public static String toString(Timestamp ts) {
		return toString(ts, DEFAULT_DATE_FORMAT);
	}


	/**
	 * Timestamp按照缺省格式转为字符串,可指定是否使用长格式
	 * 
	 * @param ts
	 *            欲转化之变量Timestamp
	 * @param fullFormat
	 *            是否使用长格式
	 * 
	 * @return 如:2003-01-01 或2003-01-01 13:21
	 */
	public static String toString(Timestamp ts, boolean fullFormat) {
		String s = null;
		if (fullFormat) {
			s = DEFAULT_DATETIME_FORMAT_SEC;
		} else {
			s = DEFAULT_DATE_FORMAT;
		}


		return toString(ts, s);
	}


	/**
	 * 将sqldate型按照指定格式转为字符串
	 * 
	 * @param sqldate
	 *            源对象
	 * 
	 * @param sFormat
	 *            ps
	 * @return 如:2003-01-01 或2003-01-01 00:00
	 */
	public static String toString(java.sql.Date sqldate, String sFormat) {
		if (sqldate == null) {
			return "";
		}
		java.util.Date d = new java.util.Date(sqldate.getTime());
		return toString(d, sFormat);
	}


	/**
	 * 将sqldate型按照缺省格式转为字符串
	 * 
	 * @param sqldate
	 *            源对象
	 * 
	 * @return 如:2003-01-01
	 */
	public static String toString(java.sql.Date sqldate) {
		return toString(sqldate, DEFAULT_DATE_FORMAT);
	}


	/**
	 * 将java.util.date型按照指定格式转为字符串
	 * 
	 * @param d
	 *            源对象
	 * 
	 * @param sFormat
	 *            ps
	 * @return 如:2003-01-01
	 */
	public static String toString(java.util.Date d, String sFormat) {
		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
				sFormat);
		String dateString = formatter.format(d);
		return dateString;
	}


	/**
	 * 将java.util.date型按照缺省格式转为字符串
	 * 
	 * @param d
	 *            源对象
	 * 
	 * @return 如:2003-01-01
	 */
	public static String toString(java.util.Date d) {
		return toString(d, DEFAULT_DATE_FORMAT);
	}


	/**
	 * 强制类型转换 从串到日期
	 * 
	 * @param sDate
	 *            源字符串,采用yyyy-MM-dd格式
	 * @param sFormat
	 *            ps
	 * @return 得到的日期对象
	 * 
	 * @throws ParseException
	 */
	public static java.util.Date parseDate(String sDate, String sFormat) {
		java.text.SimpleDateFormat formatter = null;


		java.util.Date utildate = null;
		try {
			formatter = new java.text.SimpleDateFormat(sFormat);
			utildate = formatter.parse(sDate);
		} catch (ParseException e) {
			utildate = new Date();
		}


		return utildate;
	}


	/**
	 * 强制类型转换 从串到时间戳
	 * 
	 * @param sDate
	 *            源串
	 * @param sFormat
	 *            遵循格式
	 * @return 取得的时间戳对象
	 * @throws ParseException
	 */
	public static Timestamp parseTimestamp(String sDate, String sFormat) {
		try {
			java.text.SimpleDateFormat formatter = null;
			java.util.Date utildate = null;
			formatter = new java.text.SimpleDateFormat(sFormat);
			utildate = formatter.parse(sDate);
			java.sql.Timestamp tsdate = new java.sql.Timestamp(
					utildate.getTime());
			return tsdate;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}


	/**
	 * getCurDate 取当前日期
	 * 
	 * @return java.util.Date型日期
	 **/
	public static java.util.Date getCurDate() {
		return (new java.util.Date());
	}


	/**
	 * getCurTimestamp 取当前时间戳
	 * 
	 * @return java.sql.Timestamp
	 **/
	public static java.sql.Timestamp getCurTimestamp() {
		java.util.Date today = new java.util.Date();
		java.sql.Timestamp ts = new java.sql.Timestamp(today.getTime());
		return ts;
	}


	/**
	 * getCurTimestamp 取遵循格式的当前时间
	 * 
	 * @param sFormat
	 *            遵循格式
	 * @return java.sql.Timestamp
	 **/
	public static Date getCurDate(String format) {
		try {
			SimpleDateFormat formatter = new SimpleDateFormat(format);
			String strCurDate = toString(new Date(), format);
			Date date = formatter.parse(strCurDate);
			return date;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new Date();
	}


	/**
	 * 返回:20100910210637578
	 */
	public static String formate(Date date) {
		if (date == null) {
			return "";
		}
		return String.format("%1$tY%1$tm%1$td%1$tH%1$tM%1$tS%1$tL", date);
	}


	/**
	 * 返回:2010-09-10 21:08:17
	 */
	public static String formateYMDHMS(Date date) {
		if (date == null) {
			return "";
		}
		return String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", date);
	}


	/**
	 * 返回:2010-09-10
	 */
	public static String formateYMD(Date date) {
		if (date == null) {
			return "";
		}
		return String.format("%1$tY-%1$tm-%1$td", date);
	}


	/**
	 * 返回:2010年09月10日
	 */
	public static String formateYMD_CN(Date date) {
		if (date == null) {
			return "";
		}
		return String.format("%1$tY年%1$tm月%1$td日", date);
	}


	/**
	 * 返回:09-10
	 */
	public static String formateMD(Date date) {
		if (date == null) {
			return "";
		}
		return String.format("%1$tm-%1$td", date);
	}


	/**
	 * 返回:09月10日
	 */
	public static String formateMD_CN(Date date) {
		if (date == null) {
			return "";
		}
		return String.format("%1$tm月%1$td日", date);
	}


	/**
	 * 获取23:59:59时间点
	 * 
	 * @param Date
	 * @return Date 年月日不变,时分秒改为当天的23:59:59
	 */
	public static Date getEndTime(Date date) {
		if (null == date) {
			return null;
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.HOUR_OF_DAY, 23);
		calendar.set(Calendar.MINUTE, 59);
		calendar.set(Calendar.SECOND, 59);
		return calendar.getTime();
	}


	/**
	 * 返回指定格式的日期字符串
	 * 
	 * @Description: TODO
	 * @param date
	 * @param pattern
	 * @return
	 * @author yuanjin
	 * @date 2013-12-24 上午10:12:35
	 * @return String
	 */
	public static String dateToString(Date date, String pattern) {
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(date);
	}


	public static Date getStringToDate(String format) throws Exception {
		if (null == format || "".equals(format)) {
			return null;
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		Date date = formatter.parse(format);
		return date;


	}


	// 当前日期减n天后的日期,
	public static Date beforeNowDate(int n) {
		Calendar rightNow = Calendar.getInstance();
		rightNow.add(Calendar.DAY_OF_MONTH, -n);
		return rightNow.getTime();
	}


	public static boolean isActiveTime(Date lastDate) {
		Date nowDate = new Date();// 当前时间\r
		long nowTime = nowDate.getTime();
		long lastTime = lastDate.getTime();// 以前的时间\r
		long time = nowTime - lastTime;// 时间相减比较。
		long temp = time / (1000 * 60);
		if (temp < (48 * 60))
			return true;
		else
			return false;
	}


	/**
	 * 获取00:00:00时间点
	 * 
	 * @param Date
	 * @return Date 年月日不变,时分秒改为当天的00:00:00
	 */
	public static Date getBeginTime(Date date) {
		if (null == date) {
			return null;
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		return calendar.getTime();
	}
	
}



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值