<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日期方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.