<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();
}
}
常用Date日期方法
最新推荐文章于 2024-06-21 10:21:54 发布